@metamask/assets-controllers 53.1.1 → 55.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 (44) hide show
  1. package/CHANGELOG.md +21 -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/MultichainAssetsRatesController/MultichainAssetsRatesController.d.cts +2 -2
  7. package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.mts +2 -2
  8. package/dist/NftController.cjs +8 -3
  9. package/dist/NftController.cjs.map +1 -1
  10. package/dist/NftController.d.cts +5 -1
  11. package/dist/NftController.d.cts.map +1 -1
  12. package/dist/NftController.d.mts +5 -1
  13. package/dist/NftController.d.mts.map +1 -1
  14. package/dist/NftController.mjs +9 -4
  15. package/dist/NftController.mjs.map +1 -1
  16. package/dist/NftDetectionController.cjs +43 -26
  17. package/dist/NftDetectionController.cjs.map +1 -1
  18. package/dist/NftDetectionController.d.cts +5 -4
  19. package/dist/NftDetectionController.d.cts.map +1 -1
  20. package/dist/NftDetectionController.d.mts +5 -4
  21. package/dist/NftDetectionController.d.mts.map +1 -1
  22. package/dist/NftDetectionController.mjs +44 -27
  23. package/dist/NftDetectionController.mjs.map +1 -1
  24. package/dist/TokenBalancesController.d.cts +2 -2
  25. package/dist/TokenBalancesController.d.mts +2 -2
  26. package/dist/TokenDetectionController.d.cts +2 -2
  27. package/dist/TokenDetectionController.d.mts +2 -2
  28. package/dist/TokenListController.d.cts +2 -2
  29. package/dist/TokenListController.d.mts +2 -2
  30. package/dist/TokenRatesController.cjs +1 -1
  31. package/dist/TokenRatesController.cjs.map +1 -1
  32. package/dist/TokenRatesController.d.cts +2 -2
  33. package/dist/TokenRatesController.d.cts.map +1 -1
  34. package/dist/TokenRatesController.d.mts +2 -2
  35. package/dist/TokenRatesController.d.mts.map +1 -1
  36. package/dist/TokenRatesController.mjs +2 -2
  37. package/dist/TokenRatesController.mjs.map +1 -1
  38. package/dist/assetsUtil.cjs +1 -0
  39. package/dist/assetsUtil.cjs.map +1 -1
  40. package/dist/assetsUtil.d.cts.map +1 -1
  41. package/dist/assetsUtil.d.mts.map +1 -1
  42. package/dist/assetsUtil.mjs +1 -0
  43. package/dist/assetsUtil.mjs.map +1 -1
  44. package/package.json +6 -6
package/CHANGELOG.md CHANGED
@@ -7,6 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [55.0.0]
11
+
12
+ ### Changed
13
+
14
+ - **BREAKING:** Bump peer dependency `@metamask/accounts-controller` to `^27.0.0` ([#5507](https://github.com/MetaMask/core/pull/5507))
15
+ - **BREAKING:** Bump peer dependency `@metamask/network-controller` to `^23.0.0` ([#5507](https://github.com/MetaMask/core/pull/5507))
16
+ - Bump `@metamask/polling-controller` to `^13.0.0` ([#5507](https://github.com/MetaMask/core/pull/5507))
17
+
18
+ ## [54.0.0]
19
+
20
+ ### Changed
21
+
22
+ - **BREAKING**: The `detectNfts` method in the `NftDetectionController` now accepts chain IDs directly instead of networkClientId, enabling NFT detection across multiple chains simultaneously ([#5448](https://github.com/MetaMask/core/pull/5448))
23
+
24
+ ### Fixed
25
+
26
+ - Fixed token address conversion in the `TokenRatesController` to correctly preserve the checksum address format without unnecessary hex conversion ([#5490](https://github.com/MetaMask/core/pull/5490))
27
+
10
28
  ## [53.1.1]
11
29
 
12
30
  ### Fixed
@@ -1468,7 +1486,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1468
1486
 
1469
1487
  - Use Ethers for AssetsContractController ([#845](https://github.com/MetaMask/core/pull/845))
1470
1488
 
1471
- [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@53.1.1...HEAD
1489
+ [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@55.0.0...HEAD
1490
+ [55.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@54.0.0...@metamask/assets-controllers@55.0.0
1491
+ [54.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@53.1.1...@metamask/assets-controllers@54.0.0
1472
1492
  [53.1.1]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@53.1.0...@metamask/assets-controllers@53.1.1
1473
1493
  [53.1.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@53.0.0...@metamask/assets-controllers@53.1.0
1474
1494
  [53.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@52.0.0...@metamask/assets-controllers@53.0.0
@@ -65,8 +65,8 @@ type AccountTrackerPollingInput = {
65
65
  networkClientId: NetworkClientId;
66
66
  };
67
67
  declare const AccountTrackerController_base: (abstract new (...args: any[]) => {
68
- readonly "__#13@#intervalIds": Record<string, NodeJS.Timeout>;
69
- "__#13@#intervalLength": number | undefined;
68
+ readonly "__#14@#intervalIds": Record<string, NodeJS.Timeout>;
69
+ "__#14@#intervalLength": number | undefined;
70
70
  setIntervalLength(intervalLength: number): void;
71
71
  getIntervalLength(): number | undefined;
72
72
  _startPolling(input: AccountTrackerPollingInput): void; /**
@@ -65,8 +65,8 @@ type AccountTrackerPollingInput = {
65
65
  networkClientId: NetworkClientId;
66
66
  };
67
67
  declare const AccountTrackerController_base: (abstract new (...args: any[]) => {
68
- readonly "__#13@#intervalIds": Record<string, NodeJS.Timeout>;
69
- "__#13@#intervalLength": number | undefined;
68
+ readonly "__#14@#intervalIds": Record<string, NodeJS.Timeout>;
69
+ "__#14@#intervalLength": number | undefined;
70
70
  setIntervalLength(intervalLength: number): void;
71
71
  getIntervalLength(): number | undefined;
72
72
  _startPolling(input: AccountTrackerPollingInput): void; /**
@@ -29,8 +29,8 @@ type CurrencyRatePollingInput = {
29
29
  nativeCurrencies: string[];
30
30
  };
31
31
  declare const CurrencyRateController_base: (abstract new (...args: any[]) => {
32
- readonly "__#13@#intervalIds": Record<string, NodeJS.Timeout>;
33
- "__#13@#intervalLength": number | undefined;
32
+ readonly "__#14@#intervalIds": Record<string, NodeJS.Timeout>;
33
+ "__#14@#intervalLength": number | undefined;
34
34
  setIntervalLength(intervalLength: number): void;
35
35
  getIntervalLength(): number | undefined;
36
36
  _startPolling(input: CurrencyRatePollingInput): void;
@@ -29,8 +29,8 @@ type CurrencyRatePollingInput = {
29
29
  nativeCurrencies: string[];
30
30
  };
31
31
  declare const CurrencyRateController_base: (abstract new (...args: any[]) => {
32
- readonly "__#13@#intervalIds": Record<string, NodeJS.Timeout>;
33
- "__#13@#intervalLength": number | undefined;
32
+ readonly "__#14@#intervalIds": Record<string, NodeJS.Timeout>;
33
+ "__#14@#intervalLength": number | undefined;
34
34
  setIntervalLength(intervalLength: number): void;
35
35
  getIntervalLength(): number | undefined;
36
36
  _startPolling(input: CurrencyRatePollingInput): void;
@@ -67,8 +67,8 @@ export type MultichainAssetsRatesPollingInput = {
67
67
  accountId: string;
68
68
  };
69
69
  declare const MultichainAssetsRatesController_base: (abstract new (...args: any[]) => {
70
- readonly "__#13@#intervalIds": Record<string, NodeJS.Timeout>;
71
- "__#13@#intervalLength": number | undefined;
70
+ readonly "__#14@#intervalIds": Record<string, NodeJS.Timeout>;
71
+ "__#14@#intervalLength": number | undefined;
72
72
  setIntervalLength(intervalLength: number): void;
73
73
  getIntervalLength(): number | undefined;
74
74
  _startPolling(input: MultichainAssetsRatesPollingInput): void;
@@ -67,8 +67,8 @@ export type MultichainAssetsRatesPollingInput = {
67
67
  accountId: string;
68
68
  };
69
69
  declare const MultichainAssetsRatesController_base: (abstract new (...args: any[]) => {
70
- readonly "__#13@#intervalIds": Record<string, NodeJS.Timeout>;
71
- "__#13@#intervalLength": number | undefined;
70
+ readonly "__#14@#intervalIds": Record<string, NodeJS.Timeout>;
71
+ "__#14@#intervalLength": number | undefined;
72
72
  setIntervalLength(intervalLength: number): void;
73
73
  getIntervalLength(): number | undefined;
74
74
  _startPolling(input: MultichainAssetsRatesPollingInput): void;
@@ -223,15 +223,16 @@ class NftController extends base_controller_1.BaseController {
223
223
  * @param options.userAddress - The address of the current user.
224
224
  * @param options.source - Whether the NFT was detected, added manually or suggested by a dapp.
225
225
  * @param options.networkClientId - The networkClientId that can be used to identify the network client to use for this request.
226
+ * @param options.chainId - The chain ID to add the NFT to.
226
227
  * @returns Promise resolving to the current NFT list.
227
228
  */
228
- async addNft(tokenAddress, tokenId, { nftMetadata, userAddress, source = constants_1.Source.Custom, networkClientId, } = {}) {
229
+ async addNft(tokenAddress, tokenId, { nftMetadata, userAddress, source = constants_1.Source.Custom, networkClientId, chainId, } = {}) {
229
230
  const addressToSearch = __classPrivateFieldGet(this, _NftController_instances, "m", _NftController_getAddressOrSelectedAddress).call(this, userAddress);
230
231
  if (!addressToSearch) {
231
232
  return;
232
233
  }
233
234
  const checksumHexAddress = (0, controller_utils_1.toChecksumHexAddress)(tokenAddress);
234
- const chainId = __classPrivateFieldGet(this, _NftController_instances, "m", _NftController_getCorrectChainId).call(this, { networkClientId });
235
+ const chainIdToAddTo = chainId || __classPrivateFieldGet(this, _NftController_instances, "m", _NftController_getCorrectChainId).call(this, { networkClientId });
235
236
  nftMetadata =
236
237
  nftMetadata ||
237
238
  (await __classPrivateFieldGet(this, _NftController_instances, "m", _NftController_getNftInformation).call(this, checksumHexAddress, tokenId, networkClientId));
@@ -244,9 +245,13 @@ class NftController extends base_controller_1.BaseController {
244
245
  });
245
246
  // If NFT contract was not added, do not add individual NFT
246
247
  const nftContract = newNftContracts.find((contract) => contract.address.toLowerCase() === checksumHexAddress.toLowerCase());
248
+ // This is the case when the NFT is added manually and not detected automatically
249
+ if (!nftMetadata.chainId) {
250
+ nftMetadata.chainId = (0, controller_utils_1.convertHexToDecimal)(chainIdToAddTo);
251
+ }
247
252
  // If NFT contract information, add individual NFT
248
253
  if (nftContract) {
249
- await __classPrivateFieldGet(this, _NftController_instances, "m", _NftController_addIndividualNft).call(this, checksumHexAddress, tokenId, nftMetadata, nftContract, chainId, addressToSearch, source);
254
+ await __classPrivateFieldGet(this, _NftController_instances, "m", _NftController_addIndividualNft).call(this, checksumHexAddress, tokenId, nftMetadata, nftContract, chainIdToAddTo, addressToSearch, source);
250
255
  }
251
256
  }
252
257
  /**