@metamask/assets-controllers 95.2.0 → 96.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 (40) hide show
  1. package/CHANGELOG.md +40 -1
  2. package/dist/AccountTrackerController.d.cts +2 -2
  3. package/dist/AccountTrackerController.d.mts +2 -2
  4. package/dist/CurrencyRateController.d.cts +2 -2
  5. package/dist/CurrencyRateController.d.mts +2 -2
  6. package/dist/DeFiPositionsController/DeFiPositionsController.d.cts +2 -2
  7. package/dist/DeFiPositionsController/DeFiPositionsController.d.mts +2 -2
  8. package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.cts +2 -2
  9. package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.mts +2 -2
  10. package/dist/NftController.cjs +2 -47
  11. package/dist/NftController.cjs.map +1 -1
  12. package/dist/NftController.d.cts +0 -10
  13. package/dist/NftController.d.cts.map +1 -1
  14. package/dist/NftController.d.mts +0 -10
  15. package/dist/NftController.d.mts.map +1 -1
  16. package/dist/NftController.mjs +2 -47
  17. package/dist/NftController.mjs.map +1 -1
  18. package/dist/TokenBalancesController.d.cts +2 -2
  19. package/dist/TokenBalancesController.d.mts +2 -2
  20. package/dist/TokenDetectionController.d.cts +2 -2
  21. package/dist/TokenDetectionController.d.mts +2 -2
  22. package/dist/TokenListController.d.cts +2 -2
  23. package/dist/TokenListController.d.mts +2 -2
  24. package/dist/TokenRatesController.d.cts +2 -2
  25. package/dist/TokenRatesController.d.mts +2 -2
  26. package/dist/selectors/token-selectors.cjs +18 -3
  27. package/dist/selectors/token-selectors.cjs.map +1 -1
  28. package/dist/selectors/token-selectors.d.cts.map +1 -1
  29. package/dist/selectors/token-selectors.d.mts.map +1 -1
  30. package/dist/selectors/token-selectors.mjs +18 -3
  31. package/dist/selectors/token-selectors.mjs.map +1 -1
  32. package/dist/token-prices-service/codefi-v2.cjs +75 -5
  33. package/dist/token-prices-service/codefi-v2.cjs.map +1 -1
  34. package/dist/token-prices-service/codefi-v2.d.cts +35 -3
  35. package/dist/token-prices-service/codefi-v2.d.cts.map +1 -1
  36. package/dist/token-prices-service/codefi-v2.d.mts +35 -3
  37. package/dist/token-prices-service/codefi-v2.d.mts.map +1 -1
  38. package/dist/token-prices-service/codefi-v2.mjs +71 -4
  39. package/dist/token-prices-service/codefi-v2.mjs.map +1 -1
  40. package/package.json +6 -6
package/CHANGELOG.md CHANGED
@@ -7,6 +7,43 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [96.0.0]
11
+
12
+ ### Added
13
+
14
+ - Add dynamic fetching of supported currencies from `/v1/supportedVsCurrencies` API endpoint with fallback to hardcoded list ([#7699](https://github.com/MetaMask/core/pull/7699))
15
+
16
+ ### Changed
17
+
18
+ - Removed call to NFT collections endpoint ([#7687](https://github.com/MetaMask/core/pull/7687))
19
+ - Bump `@metamask/multichain-account-service` from `^5.0.0` to `^5.1.0` ([#7678](https://github.com/MetaMask/core/pull/7678))
20
+ - Set zero address for native token of Henesys/MSU ([#7666](https://github.com/MetaMask/core/pull/7666))
21
+
22
+ ### Removed
23
+
24
+ - **BREAKING:** Remove unused deprecated `getNFTContractInfo` function from NftController ([#7703](https://github.com/MetaMask/core/pull/7703))
25
+
26
+ ### Fixed
27
+
28
+ - Fix crash in `selectAllMultichainAssets` selector when asset metadata is missing `units` property ([#7702](https://github.com/MetaMask/core/pull/7702))
29
+
30
+ ## [95.3.0]
31
+
32
+ ### Added
33
+
34
+ - Add BOB (0xed88) mapping to eip155:60808/erc20:0x0000000000000000000000000000000000000000 ([#7635](https://github.com/MetaMask/core/pull/7635))
35
+
36
+ ### Changed
37
+
38
+ - Bump `@metamask/accounts-controller` from `^35.0.1` to `^35.0.2` ([#7642](https://github.com/MetaMask/core/pull/7642))
39
+ - Bump `@metamask/network-controller` from `^28.0.0` to `^29.0.0` ([#7642](https://github.com/MetaMask/core/pull/7642))
40
+ - Bump `@metamask/polling-controller` from `^16.0.1` to `^16.0.2` ([#7642](https://github.com/MetaMask/core/pull/7642))
41
+ - Bump `@metamask/transaction-controller` from `^62.9.1` to `^62.9.2` ([#7642](https://github.com/MetaMask/core/pull/7642))
42
+
43
+ ### Fixed
44
+
45
+ - Fix native token fiat calculation for chains without market data by using currency rate fallback ([#7636](https://github.com/MetaMask/core/pull/7636))
46
+
10
47
  ## [95.2.0]
11
48
 
12
49
  ### Added
@@ -2511,7 +2548,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2511
2548
 
2512
2549
  - Use Ethers for AssetsContractController ([#845](https://github.com/MetaMask/core/pull/845))
2513
2550
 
2514
- [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@95.2.0...HEAD
2551
+ [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@96.0.0...HEAD
2552
+ [96.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@95.3.0...@metamask/assets-controllers@96.0.0
2553
+ [95.3.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@95.2.0...@metamask/assets-controllers@95.3.0
2515
2554
  [95.2.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@95.1.0...@metamask/assets-controllers@95.2.0
2516
2555
  [95.1.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@95.0.0...@metamask/assets-controllers@95.1.0
2517
2556
  [95.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@94.1.0...@metamask/assets-controllers@95.0.0
@@ -90,8 +90,8 @@ type AccountTrackerPollingInput = {
90
90
  queryAllAccounts?: boolean;
91
91
  };
92
92
  declare const AccountTrackerController_base: (abstract new (...args: any[]) => {
93
- readonly "__#14@#intervalIds": Record<string, NodeJS.Timeout>;
94
- "__#14@#intervalLength": number | undefined;
93
+ readonly "__#15@#intervalIds": Record<string, NodeJS.Timeout>;
94
+ "__#15@#intervalLength": number | undefined;
95
95
  setIntervalLength(intervalLength: number): void;
96
96
  getIntervalLength(): number | undefined;
97
97
  _startPolling(input: AccountTrackerPollingInput): void;
@@ -90,8 +90,8 @@ type AccountTrackerPollingInput = {
90
90
  queryAllAccounts?: boolean;
91
91
  };
92
92
  declare const AccountTrackerController_base: (abstract new (...args: any[]) => {
93
- readonly "__#14@#intervalIds": Record<string, NodeJS.Timeout>;
94
- "__#14@#intervalLength": number | undefined;
93
+ readonly "__#15@#intervalIds": Record<string, NodeJS.Timeout>;
94
+ "__#15@#intervalLength": number | undefined;
95
95
  setIntervalLength(intervalLength: number): void;
96
96
  getIntervalLength(): number | undefined;
97
97
  _startPolling(input: AccountTrackerPollingInput): void;
@@ -33,8 +33,8 @@ type CurrencyRatePollingInput = {
33
33
  nativeCurrencies: string[];
34
34
  };
35
35
  declare const CurrencyRateController_base: (abstract new (...args: any[]) => {
36
- readonly "__#14@#intervalIds": Record<string, NodeJS.Timeout>;
37
- "__#14@#intervalLength": number | undefined;
36
+ readonly "__#15@#intervalIds": Record<string, NodeJS.Timeout>;
37
+ "__#15@#intervalLength": number | undefined;
38
38
  setIntervalLength(intervalLength: number): void;
39
39
  getIntervalLength(): number | undefined;
40
40
  _startPolling(input: CurrencyRatePollingInput): void;
@@ -33,8 +33,8 @@ type CurrencyRatePollingInput = {
33
33
  nativeCurrencies: string[];
34
34
  };
35
35
  declare const CurrencyRateController_base: (abstract new (...args: any[]) => {
36
- readonly "__#14@#intervalIds": Record<string, NodeJS.Timeout>;
37
- "__#14@#intervalLength": number | undefined;
36
+ readonly "__#15@#intervalIds": Record<string, NodeJS.Timeout>;
37
+ "__#15@#intervalLength": number | undefined;
38
38
  setIntervalLength(intervalLength: number): void;
39
39
  getIntervalLength(): number | undefined;
40
40
  _startPolling(input: CurrencyRatePollingInput): void;
@@ -57,8 +57,8 @@ export type AllowedEvents = KeyringControllerLockEvent | TransactionControllerTr
57
57
  */
58
58
  export type DeFiPositionsControllerMessenger = Messenger<typeof controllerName, DeFiPositionsControllerActions | AllowedActions, DeFiPositionsControllerEvents | AllowedEvents>;
59
59
  declare const DeFiPositionsController_base: (abstract new (...args: any[]) => {
60
- readonly "__#14@#intervalIds": Record<string, NodeJS.Timeout>;
61
- "__#14@#intervalLength": number | undefined;
60
+ readonly "__#15@#intervalIds": Record<string, NodeJS.Timeout>;
61
+ "__#15@#intervalLength": number | undefined;
62
62
  setIntervalLength(intervalLength: number): void;
63
63
  getIntervalLength(): number | undefined;
64
64
  _startPolling(input: import("@metamask/utils").Json): void;
@@ -57,8 +57,8 @@ export type AllowedEvents = KeyringControllerLockEvent | TransactionControllerTr
57
57
  */
58
58
  export type DeFiPositionsControllerMessenger = Messenger<typeof controllerName, DeFiPositionsControllerActions | AllowedActions, DeFiPositionsControllerEvents | AllowedEvents>;
59
59
  declare const DeFiPositionsController_base: (abstract new (...args: any[]) => {
60
- readonly "__#14@#intervalIds": Record<string, NodeJS.Timeout>;
61
- "__#14@#intervalLength": number | undefined;
60
+ readonly "__#15@#intervalIds": Record<string, NodeJS.Timeout>;
61
+ "__#15@#intervalLength": number | undefined;
62
62
  setIntervalLength(intervalLength: number): void;
63
63
  getIntervalLength(): number | undefined;
64
64
  _startPolling(input: import("@metamask/utils").Json): void;
@@ -81,8 +81,8 @@ export type ConversionRatesWithMarketData = {
81
81
  conversionRates: Record<CaipAssetType, Record<CaipAssetType, UnifiedAssetConversion | null>>;
82
82
  };
83
83
  declare const MultichainAssetsRatesController_base: (abstract new (...args: any[]) => {
84
- readonly "__#14@#intervalIds": Record<string, NodeJS.Timeout>;
85
- "__#14@#intervalLength": number | undefined;
84
+ readonly "__#15@#intervalIds": Record<string, NodeJS.Timeout>;
85
+ "__#15@#intervalLength": number | undefined;
86
86
  setIntervalLength(intervalLength: number): void;
87
87
  getIntervalLength(): number | undefined;
88
88
  _startPolling(input: MultichainAssetsRatesPollingInput): void;
@@ -81,8 +81,8 @@ export type ConversionRatesWithMarketData = {
81
81
  conversionRates: Record<CaipAssetType, Record<CaipAssetType, UnifiedAssetConversion | null>>;
82
82
  };
83
83
  declare const MultichainAssetsRatesController_base: (abstract new (...args: any[]) => {
84
- readonly "__#14@#intervalIds": Record<string, NodeJS.Timeout>;
85
- "__#14@#intervalLength": number | undefined;
84
+ readonly "__#15@#intervalIds": Record<string, NodeJS.Timeout>;
85
+ "__#15@#intervalLength": number | undefined;
86
86
  setIntervalLength(intervalLength: number): void;
87
87
  getIntervalLength(): number | undefined;
88
88
  _startPolling(input: MultichainAssetsRatesPollingInput): void;
@@ -13,7 +13,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
13
13
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
15
  };
16
- var _NftController_instances, _NftController_mutex, _NftController_selectedAccountId, _NftController_ipfsGateway, _NftController_displayNftMedia, _NftController_useIpfsSubdomains, _NftController_isIpfsGatewayEnabled, _NftController_onNftAdded, _NftController_onPreferencesControllerStateChange, _NftController_onSelectedAccountChange, _NftController_updateNestedNftState, _NftController_getNftCollectionApi, _NftController_getNftInformationFromApi, _NftController_getNftInformationFromTokenURI, _NftController_getNftURIAndStandard, _NftController_getNftInformation, _NftController_getNftContractInformationFromContract, _NftController_getNftContractInformation, _NftController_addIndividualNft, _NftController_addNftContract, _NftController_removeAndIgnoreIndividualNft, _NftController_removeIndividualNft, _NftController_removeNftContract, _NftController_validateWatchNft, _NftController_getAddressOrSelectedAddress, _NftController_updateNftUpdateForAccount, _NftController_bulkSanitizeNftMetadata, _NftController_sanitizeNftMetadata;
16
+ var _NftController_instances, _NftController_mutex, _NftController_selectedAccountId, _NftController_ipfsGateway, _NftController_displayNftMedia, _NftController_useIpfsSubdomains, _NftController_isIpfsGatewayEnabled, _NftController_onNftAdded, _NftController_onPreferencesControllerStateChange, _NftController_onSelectedAccountChange, _NftController_updateNestedNftState, _NftController_getNftInformationFromApi, _NftController_getNftInformationFromTokenURI, _NftController_getNftURIAndStandard, _NftController_getNftInformation, _NftController_getNftContractInformationFromContract, _NftController_getNftContractInformation, _NftController_addIndividualNft, _NftController_addNftContract, _NftController_removeAndIgnoreIndividualNft, _NftController_removeIndividualNft, _NftController_removeNftContract, _NftController_validateWatchNft, _NftController_getAddressOrSelectedAddress, _NftController_updateNftUpdateForAccount, _NftController_bulkSanitizeNftMetadata, _NftController_sanitizeNftMetadata;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.NftController = exports.getDefaultNftControllerState = void 0;
19
19
  const address_1 = require("@ethersproject/address");
@@ -600,25 +600,6 @@ class NftController extends base_controller_1.BaseController {
600
600
  });
601
601
  return true;
602
602
  }
603
- /**
604
- * Fetches NFT Collection Metadata from the NFT API.
605
- *
606
- * @param contractAddresses - The contract addresses of the NFTs.
607
- * @param chainId - The chain ID of the network where the NFT is located.
608
- * @returns NFT collections metadata.
609
- */
610
- async getNFTContractInfo(contractAddresses, chainId) {
611
- const url = new URL(__classPrivateFieldGet(this, _NftController_instances, "m", _NftController_getNftCollectionApi).call(this));
612
- url.searchParams.append('chainId', chainId);
613
- for (const address of contractAddresses) {
614
- url.searchParams.append('contract', address);
615
- }
616
- return await (0, controller_utils_1.handleFetch)(url, {
617
- headers: {
618
- Version: controller_utils_1.NFT_API_VERSION,
619
- },
620
- });
621
- }
622
603
  async _requestApproval(suggestedNftMeta) {
623
604
  return this.messenger.call('ApprovalController:addRequest', {
624
605
  id: suggestedNftMeta.id,
@@ -707,8 +688,6 @@ async function _NftController_onSelectedAccountChange(internalAccount) {
707
688
  [userAddress]: newAddressState,
708
689
  };
709
690
  });
710
- }, _NftController_getNftCollectionApi = function _NftController_getNftCollectionApi() {
711
- return `${controller_utils_1.NFT_API_BASE_URL}/collections`;
712
691
  }, _NftController_getNftInformationFromApi =
713
692
  /**
714
693
  * Request individual NFT information from NFT API.
@@ -736,20 +715,6 @@ async function _NftController_getNftInformationFromApi(contractAddress, tokenId)
736
715
  },
737
716
  },
738
717
  });
739
- // Params for getCollections API call
740
- const getCollectionParams = new URLSearchParams({
741
- chainId: '1',
742
- id: `${nftInformation?.tokens[0]?.token?.collection?.id}`,
743
- }).toString();
744
- // Fetch collection information using collectionId
745
- const collectionInformation = await (0, controller_utils_1.fetchWithErrorHandling)({
746
- url: `${controller_utils_1.NFT_API_BASE_URL}/collections?${getCollectionParams}`,
747
- options: {
748
- headers: {
749
- Version: controller_utils_1.NFT_API_VERSION,
750
- },
751
- },
752
- });
753
718
  // if we were still unable to fetch the data we return out the default/null of `NftMetadata`
754
719
  if (!nftInformation?.tokens?.[0]?.token) {
755
720
  return {
@@ -765,17 +730,7 @@ async function _NftController_getNftInformationFromApi(contractAddress, tokenId)
765
730
  /* istanbul ignore next */
766
731
  const nftMetadata = Object.assign({}, { name: name || null }, { description: description || null }, { image: image || null }, collection?.creator && { creator: collection.creator }, imageOriginal && { imageOriginal }, imageSmall && { imageThumbnail: imageSmall }, kind && { standard: kind.toUpperCase() }, lastSale && { lastSale }, attributes && { attributes }, nftInformation.tokens[0].market?.topBid && {
767
732
  topBid: nftInformation.tokens[0].market?.topBid,
768
- }, rarityRank && { rarityRank }, rarity && { rarity }, (collection || collectionInformation) && {
769
- collection: {
770
- ...(collection || {}),
771
- creator: collection?.creator ||
772
- collectionInformation?.collections[0].creator,
773
- openseaVerificationStatus: collectionInformation?.collections[0].openseaVerificationStatus,
774
- contractDeployedAt: collectionInformation?.collections[0].contractDeployedAt,
775
- ownerCount: collectionInformation?.collections[0].ownerCount,
776
- topBid: collectionInformation?.collections[0].topBid,
777
- },
778
- });
733
+ }, rarityRank && { rarityRank }, rarity && { rarity }, collection && { collection });
779
734
  return nftMetadata;
780
735
  }, _NftController_getNftInformationFromTokenURI =
781
736
  /**