@metamask-previews/assets-controllers 24.0.0-preview.d357889 → 25.0.0-preview.0a7589e7

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 (50) hide show
  1. package/CHANGELOG.md +182 -37
  2. package/dist/AssetsContractController.d.ts +5 -6
  3. package/dist/AssetsContractController.d.ts.map +1 -1
  4. package/dist/AssetsContractController.js +1 -2
  5. package/dist/AssetsContractController.js.map +1 -1
  6. package/dist/NftController.d.ts.map +1 -1
  7. package/dist/NftController.js +18 -16
  8. package/dist/NftController.js.map +1 -1
  9. package/dist/NftDetectionController.d.ts.map +1 -1
  10. package/dist/NftDetectionController.js +0 -2
  11. package/dist/NftDetectionController.js.map +1 -1
  12. package/dist/Standards/ERC20Standard.d.ts +1 -2
  13. package/dist/Standards/ERC20Standard.d.ts.map +1 -1
  14. package/dist/Standards/ERC20Standard.js +6 -8
  15. package/dist/Standards/ERC20Standard.js.map +1 -1
  16. package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.d.ts +1 -2
  17. package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.d.ts.map +1 -1
  18. package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.js.map +1 -1
  19. package/dist/Standards/NftStandards/ERC721/ERC721Standard.d.ts.map +1 -1
  20. package/dist/Standards/NftStandards/ERC721/ERC721Standard.js +2 -3
  21. package/dist/Standards/NftStandards/ERC721/ERC721Standard.js.map +1 -1
  22. package/dist/TokenBalancesController.d.ts +12 -10
  23. package/dist/TokenBalancesController.d.ts.map +1 -1
  24. package/dist/TokenBalancesController.js +13 -16
  25. package/dist/TokenBalancesController.js.map +1 -1
  26. package/dist/TokenDetectionController.d.ts +45 -20
  27. package/dist/TokenDetectionController.d.ts.map +1 -1
  28. package/dist/TokenDetectionController.js +208 -99
  29. package/dist/TokenDetectionController.js.map +1 -1
  30. package/dist/TokensController.d.ts +20 -20
  31. package/dist/TokensController.d.ts.map +1 -1
  32. package/dist/TokensController.js +16 -23
  33. package/dist/TokensController.js.map +1 -1
  34. package/dist/assetsUtil.d.ts +1 -2
  35. package/dist/assetsUtil.d.ts.map +1 -1
  36. package/dist/assetsUtil.js +7 -3
  37. package/dist/assetsUtil.js.map +1 -1
  38. package/dist/index.d.ts +6 -3
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +7 -4
  41. package/dist/index.js.map +1 -1
  42. package/dist/token-prices-service/codefi-v2.d.ts +1 -1
  43. package/dist/token-prices-service/codefi-v2.d.ts.map +1 -1
  44. package/dist/token-prices-service/codefi-v2.js +3 -1
  45. package/dist/token-prices-service/codefi-v2.js.map +1 -1
  46. package/package.json +20 -13
  47. package/dist/Standards/standards-types.d.ts +0 -15
  48. package/dist/Standards/standards-types.d.ts.map +0 -1
  49. package/dist/Standards/standards-types.js +0 -3
  50. package/dist/Standards/standards-types.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,4 +1,5 @@
1
1
  # Changelog
2
+
2
3
  All notable changes to this project will be documented in this file.
3
4
 
4
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
@@ -6,34 +7,89 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
7
 
7
8
  ## [Unreleased]
8
9
 
10
+ ### Added
11
+
12
+ - **BREAKING:** Adds `@metamask/accounts-controller` ^8.0.0 and `@metamask/keyring-controller` ^12.0.0 as dependencies and peer dependencies. ([#3775](https://github.com/MetaMask/core/pull/3775/)).
13
+ - **BREAKING:** `TokenDetectionController` newly subscribes to the `PreferencesController:stateChange`, `AccountsController:selectedAccountChange`, `KeyringController:lock`, `KeyringController:unlock` events, and allows messenger actions `AccountsController:getSelectedAccount`, `NetworkController:findNetworkClientIdByChainId`, `NetworkController:getNetworkConfigurationByNetworkClientId`, `NetworkController:getProviderConfig`, `KeyringController:getState`, `PreferencesController:getState`, `TokenListController:getState`, `TokensController:getState`, `TokensController:addDetectedTokens`. ([#3775](https://github.com/MetaMask/core/pull/3775/)), ([#3923](https://github.com/MetaMask/core/pull/3923/))
14
+ - `TokensController` now exports `TokensControllerActions`, `TokensControllerGetStateAction`, `TokensControllerAddDetectedTokensAction`, `TokensControllerEvents`, `TokensControllerStateChangeEvent`. ([#3690](https://github.com/MetaMask/core/pull/3690/))
15
+
16
+ ### Changed
17
+
18
+ - **BREAKING:** `TokenDetectionController` is merged with `DetectTokensController` from the `metamask-extension` repo. ([#3775](https://github.com/MetaMask/core/pull/3775/), [#3923](https://github.com/MetaMask/core/pull/3923)), ([#3938](https://github.com/MetaMask/core/pull/3938))
19
+ - **BREAKING:** `TokenDetectionController` now resets its polling interval to the default value of 3 minutes when token detection is triggered by external controller events `KeyringController:unlock`, `TokenListController:stateChange`, `PreferencesController:stateChange`, `AccountsController:selectedAccountChange`.
20
+ - **BREAKING:** `TokenDetectionController` now refetches tokens on `NetworkController:networkDidChange` if the `networkClientId` is changed instead of `chainId`.
21
+ - **BREAKING:** `TokenDetectionController` cannot initiate polling or token detection if `KeyringController` state is locked.
22
+ - **BREAKING:** The `detectTokens` method input option `accountAddress` has been renamed to `selectedAddress`.
23
+ - **BREAKING:** The `detectTokens` method now excludes tokens that are already included in the `TokensController`'s `detectedTokens` list from the batch of incoming tokens it sends to the `TokensController` `addDetectedTokens` method.
24
+ - **BREAKING:** The constructor for `TokenDetectionController` expects a new required proprerty `trackMetaMetricsEvent`, which defines the callback that is called in the `detectTokens` method.
25
+ - The constructor option `selectedAddress` no longer defaults to `''` if omitted. Instead, the correct address is assigned using the `AccountsController:getSelectedAccount` messenger action.
26
+ - **BREAKING:** In Mainnet, even if the `PreferenceController`'s `useTokenDetection` option is set to false, automatic token detection is performed on the legacy token list (token data from the contract-metadata repo).
27
+ - **BREAKING:** The `TokensState` type is now defined as a type alias rather than an interface. ([#3690](https://github.com/MetaMask/core/pull/3690/))
28
+ - This is breaking because it could affect how this type is used with other types, such as `Json`, which does not support TypeScript interfaces.
29
+
30
+ ### Removed
31
+
32
+ - **BREAKING:** `TokenDetectionController` constructor no longer accepts options `onPreferencesStateChange`, `getPreferencesState`, `getTokensState`, `addDetectedTokens`. ([#3690](https://github.com/MetaMask/core/pull/3690/), [#3775](https://github.com/MetaMask/core/pull/3775/))
33
+ - **BREAKING:** `TokenDetectionController` no longer allows the `NetworkController:stateChange` event. The `NetworkController:networkDidChange` event can be used instead. ([#3775](https://github.com/MetaMask/core/pull/3775/))
34
+ - **BREAKING:** `TokensController` constructor no longer accepts options `onPreferencesStateChange`, `onNetworkDidChange`, `onTokenListStateChange`, `getNetworkClientById`. ([#3690](https://github.com/MetaMask/core/pull/3690/))
35
+ - **BREAKING:** `TokenBalancesController` constructor no longer accepts options `onTokensStateChange`, `getSelectedAddress`. ([#3690](https://github.com/MetaMask/core/pull/3690/))
36
+
37
+ ## [25.0.0]
38
+
39
+ ### Added
40
+
41
+ - Add Linea to price api supported chains ([#3797](https://github.com/MetaMask/core/pull/3797))
42
+
43
+ ### Changed
44
+
45
+ - **BREAKING:** Convert `TokenBalancesController` to `BaseControllerV2` ([#3750](https://github.com/MetaMask/core/pull/3750))
46
+ - The constructor parameters have changed; rather than accepting a "config" parameter for interval and tokens we now pass both values as controller options, and a "state" parameter, there is now just a single object for all constructor arguments. This object has a mandatory `messenger` and an optional `state`, `tokens`, `interval` properties a disabled property has also been added.
47
+ - State now saves tokens balances as strings and not as a BNs.
48
+ - Additional BN export has been removed as it was intended to be removed in the next major release.
49
+ - **BREAKING:** Bump `@metamask/approval-controller` peer dependency to `^5.1.2` ([#3821](https://github.com/MetaMask/core/pull/3821))
50
+ - **BREAKING:** Bump `@metamask/network-controller` peer dependency to `^17.2.0` ([#3821](https://github.com/MetaMask/core/pull/3821))
51
+ - **BREAKING:** Bump `@metamask/preferences-controller` peer dependency to `^7.0.0` ([#3821](https://github.com/MetaMask/core/pull/3821))
52
+ - Bump `@metamask/utils` to `^8.3.0` ([#3769](https://github.com/MetaMask/core/pull/3769))
53
+ - Bump `@metamask/base-controller` to `^4.1.1` ([#3760](https://github.com/MetaMask/core/pull/3760), [#3821](https://github.com/MetaMask/core/pull/3821))
54
+ - Bump `@metamask/controller-utils` to `^8.0.2` ([#3821](https://github.com/MetaMask/core/pull/3821))
55
+ - Bump `@metamask/polling-controller` to `^5.0.0` ([#3821](https://github.com/MetaMask/core/pull/3821))
56
+
9
57
  ## [24.0.0]
58
+
10
59
  ### Added
60
+
11
61
  - Add `getDefaultTokenListState` function to `TokenListController` ([#3744](https://github.com/MetaMask/core/pull/3744))
12
62
  - Add `getDefaultNftState` function to the `NftController` ([#3742](https://github.com/MetaMask/core/pull/3742))
13
63
  - Add `getDefaultTokensState` function to the `TokensController` ([#3743](https://github.com/MetaMask/core/pull/3743))
14
64
 
15
65
  ### Changed
66
+
16
67
  - **BREAKING:** Bump `@metamask/preferences-controller` to ^6.0.0
17
68
  - Price API perf improvements ([#3753](https://github.com/MetaMask/core/pull/3753), [#3755](https://github.com/MetaMask/core/pull/3755))
18
69
  - Reduce token batch size from 100 to 30
19
70
  - Sort token addresses in query params for more cache hits
20
71
 
21
72
  ## [23.1.0]
73
+
22
74
  ### Added
75
+
23
76
  - Add support to `CodefiTokenPricesServiceV2` for tracking degraded service ([#3691](https://github.com/MetaMask/core/pull/3691))
24
77
  - The constructor has two new options: `onDegraded` and `degradedThreshold`. `onDegraded` is an event handler for instances of degraded service (i.e. failed or slow requests), and `degradedThreshold` determines how slow a request has to be before we consider service to be degraded.
25
78
 
26
79
  ## [23.0.0]
80
+
27
81
  ### Added
82
+
28
83
  - Add `onBreak` handler to `CodefiTokenPricesServiceV2` ([#3677](https://github.com/MetaMask/core/pull/3677))
29
84
  - This allows listening for "circuit breaks", which can indicate an outage. Useful for metrics.
30
85
  - Add `fetchTokenContractExchangeRates` utility method ([#3657](https://github.com/MetaMask/core/pull/3657))
31
86
  - `TokenListController` now exports a `TokenListControllerMessenger` type ([#3609](https://github.com/MetaMask/core/pull/3609)).
32
87
  - `TokenDetectionController` exports types `TokenDetectionControllerMessenger`, `TokenDetectionControllerActions`, `TokenDetectionControllerGetStateAction`, `TokenDetectionControllerEvents`, `TokenDetectionControllerStateChangeEvent` ([#3609](https://github.com/MetaMask/core/pull/3609)).
33
- - Add `enable` and `disable` methods to `TokenDetectionController`, which control whether the controller is able to make polling requests or all of its network calls are blocked. ([#3609](https://github.com/MetaMask/core/pull/3609)).
88
+ - Add `enable` and `disable` methods to `TokenDetectionController`, which control whether the controller is able to make polling requests or all of its network calls are blocked. ([#3609](https://github.com/MetaMask/core/pull/3609)).
34
89
  - Note that if the controller is initiated without the `disabled` constructor option set to `false`, the `enable` method will need to be called before the controller can make polling requests in response to subscribed events.
35
90
 
36
91
  ### Changed
92
+
37
93
  - **BREAKING:** Bump `@metamask/approval-controller` dependency and peer dependency from `^5.1.0` to `^5.1.1` ([#3695](https://github.com/MetaMask/core/pull/3695))
38
94
  - **BREAKING:** Bump `@metamask/network-controller` dependency and peer dependency from `^17.0.0` to `^17.1.0` ([#3695](https://github.com/MetaMask/core/pull/3695))
39
95
  - **BREAKING:** Bump `@metamask/preferences-controller` dependency and peer dependency from `^5.0.0` to `^5.0.1` ([#3695](https://github.com/MetaMask/core/pull/3695))
@@ -46,19 +102,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
46
102
  - Bump `@metamask/controller-utils` from `8.0.0` to `^8.0.1` ([#3695](https://github.com/MetaMask/core/pull/3695))
47
103
 
48
104
  ### Fixed
105
+
49
106
  - Fix error caused by OpenSea API rename of `supply` to `total_supply` ([#3692](https://github.com/MetaMask/core/pull/3692))
50
107
  - Fix `CodefiTokenPricesServiceV2` support for Shiden ([#3683](https://github.com/MetaMask/core/pull/3683))
51
108
  - Improve how `CodefiTokenPricesServiceV2` handles token price update failures ([#3687](https://github.com/MetaMask/core/pull/3687))
52
109
  - Previously a single failed token price update would prevent all other token prices from updating as well. With this update, we log and error and continue when we fail to update a token price, ensuring the others still get updated.
53
110
 
54
111
  ## [22.0.0]
112
+
55
113
  ### Changed
114
+
56
115
  - **BREAKING:** OpenSea V2 API is used instead of V1 ([#3654](https://github.com/MetaMask/core/pull/3654))
57
- - `NftDetectionController` constructor now requires the `NftController.getNftApi` function.
116
+ - `NftDetectionController` constructor now requires the `NftController.getNftApi` function.
58
117
  - NFT controllers will no longer return `last_sale` information for NFTs fetched after the OpenSea V2 update
59
118
 
60
119
  ## [21.0.0]
120
+
61
121
  ### Added
122
+
62
123
  - Add `CodefiTokenPricesServiceV2` ([#3600](https://github.com/MetaMask/core/pull/3600), [#3655](https://github.com/MetaMask/core/pull/3655), [#3655](https://github.com/MetaMask/core/pull/3655))
63
124
  - This class can be used for the new `tokenPricesService` argument for TokenRatesController. It uses a MetaMask API to fetch prices for tokens instead of CoinGecko.
64
125
  - The `CodefiTokenPricesServiceV2` will retry if the token price update fails
@@ -73,6 +134,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
73
134
  - Support token detection on Arbitrum and Optimism ([#2035](https://github.com/MetaMask/core/pull/2035))
74
135
 
75
136
  ### Changed
137
+
76
138
  - **BREAKING:** `TokenRatesController` now takes a required argument `tokenPricesService` ([#3600](https://github.com/MetaMask/core/pull/3600))
77
139
  - This object is responsible for fetching the prices for tokens held by this controller.
78
140
  - **BREAKING:** Update signature of `TokenRatesController.updateExchangeRatesByChainId` ([#3600](https://github.com/MetaMask/core/pull/3600), [#3653](https://github.com/MetaMask/core/pull/3653))
@@ -81,8 +143,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
81
143
  - These are needed for the new "polling by `networkClientId`" feature
82
144
  - **BREAKING:** `AccountTrackerController` has a new required state property, `accountByChainId`([#3586](https://github.com/MetaMask/core/pull/3586))
83
145
  - This is needed to track balances accross chains. It was introduced for the "polling by `networkClientId`" feature, but is useful on its own as well.
84
- - **BREAKING**: `AccountTrackerController` adds a mutex to `refresh` making it only possible for one call to be executed at time ([#3586](https://github.com/MetaMask/core/pull/3586))
85
- - **BREAKING**: `TokensController.watchAsset` now performs on-chain validation of the asset's symbol and decimals, if they're defined in the contract ([#1745](https://github.com/MetaMask/core/pull/1745))
146
+ - **BREAKING:** `AccountTrackerController` adds a mutex to `refresh` making it only possible for one call to be executed at time ([#3586](https://github.com/MetaMask/core/pull/3586))
147
+ - **BREAKING:** `TokensController.watchAsset` now performs on-chain validation of the asset's symbol and decimals, if they're defined in the contract ([#1745](https://github.com/MetaMask/core/pull/1745))
86
148
  - The `TokensController` constructor no longer accepts a `getERC20TokenName` option. It was no longer needed due to this change.
87
149
  - Add new method `_getProvider`, though this is intended for internal use and should not be called externally.
88
150
  - Additionally, if the symbol and decimals are defined in the contract, they are no longer required to be passed to `watchAsset`
@@ -106,18 +168,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
106
168
  - Add dependencies `cockatiel` and `lodash` ([#3586](https://github.com/MetaMask/core/pull/3586), [#3655](https://github.com/MetaMask/core/pull/3655))
107
169
 
108
170
  ### Removed
171
+
109
172
  - **BREAKING:** Remove `fetchExchangeRate` method from TokenRatesController ([#3600](https://github.com/MetaMask/core/pull/3600))
110
173
  - This method (not to be confused with `updateExchangeRate`, which is still present) was only ever intended to be used internally and should not be accessed directly.
111
174
  - **BREAKING:** Remove `getChainSlug` method from TokenRatesController ([#3600](https://github.com/MetaMask/core/pull/3600))
112
175
  - This method was previously used in TokenRatesController to access the CoinGecko API. There is no equivalent.
113
176
  - **BREAKING:** Remove `CoinGeckoResponse` and `CoinGeckoPlatform` types ([#3600](https://github.com/MetaMask/core/pull/3600))
114
177
  - These types were previously used in TokenRatesController to represent data returned from the CoinGecko API. There is no equivalent.
115
- - **BREAKING**: The TokenRatesController now only supports updating and polling rates for tokens tracked by the TokensController ([#3639](https://github.com/MetaMask/core/pull/3639))
178
+ - **BREAKING:** The TokenRatesController now only supports updating and polling rates for tokens tracked by the TokensController ([#3639](https://github.com/MetaMask/core/pull/3639))
116
179
  - The `tokenAddresses` option has been removed from `startPollingByNetworkClientId`
117
180
  - The `tokenContractAddresses` option has been removed from `updateExchangeRatesByChainId`
118
- - **BREAKING**: `TokenRatesController.fetchAndMapExchangeRates` is no longer exposed publicly ([#3621](https://github.com/MetaMask/core/pull/3621))
181
+ - **BREAKING:** `TokenRatesController.fetchAndMapExchangeRates` is no longer exposed publicly ([#3621](https://github.com/MetaMask/core/pull/3621))
119
182
 
120
183
  ### Fixed
184
+
121
185
  - Prevent `TokenRatesController` from making redundant token rate updates when tokens change ([#3647](https://github.com/MetaMask/core/pull/3647), [#3663](https://github.com/MetaMask/core/pull/3663))
122
186
  - Previously, token rates would be re-fetched for the globally selected network on all TokensController state changes, but now token rates are always performed for a deduplicated and normalized set of addresses, and changes to this set determine whether rates should be re-fetched.
123
187
  - Prevent redundant overlapping token rate updates in `TokenRatesController` ([#3635](https://github.com/MetaMask/core/pull/3635))
@@ -129,7 +193,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
129
193
  - This affects `watchNft` and `addNft` methods
130
194
 
131
195
  ## [20.0.0]
196
+
132
197
  ### Added
198
+
133
199
  - **BREAKING**: `TokenRatesControllerState` now has required `contractExchangeRatesByChainId` property which an object keyed by `chainId` and `nativeCurrency` ([#2015](https://github.com/MetaMask/core/pull/2015))
134
200
  - **BREAKING**: `TokenRatesController` constructor params now requires `getNetworkClientById` ([#2015](https://github.com/MetaMask/core/pull/2015))
135
201
  - Add types `CurrencyRateControllerEvents` and `CurrencyRateControllerActions` ([#2029](https://github.com/MetaMask/core/pull/2029))
@@ -146,6 +212,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
146
212
  - `TokenRatesController.fetchAndMapExchangeRates()` now accepts an optional `tokenAddresses` as the last parameter ([#2015](https://github.com/MetaMask/core/pull/2015))
147
213
 
148
214
  ### Changed
215
+
149
216
  - **BREAKING:** Bump dependency on `@metamask/base-controller` to ^4.0.0 ([#2063](https://github.com/MetaMask/core/pull/2063))
150
217
  - This is breaking because the type of the `messenger` has backward-incompatible changes. See the changelog for this package for more.
151
218
  - Bump `@metamask/approval-controller` to ^5.0.0 ([#2063](https://github.com/MetaMask/core/pull/2063))
@@ -155,14 +222,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
155
222
  - Bump `@metamask/preferences-controller` to ^5.0.0 ([#2063](https://github.com/MetaMask/core/pull/2063))
156
223
 
157
224
  ## [19.0.0]
225
+
158
226
  ### Changed
227
+
159
228
  - **BREAKING:** Bump dependency and peer dependency on `@metamask/network-controller` to ^16.0.0
160
229
  - Add optional `networkClientId` and `userAddress` args to remaining `NftController` public methods ([#2006](https://github.com/MetaMask/core/pull/2006))
161
230
  - `watchNft`, `removeNft`, `removeAndIgnoreNft`, `removeNftContract`, `updateNftFavoriteStatus`, and `checkAndUpdateAllNftsOwnershipStatus` methods on `NftController` all now accept an optional options object argument containing `networkClientId` and `userAddress` to identify where in state to mutate.
162
231
  - **BREAKING**: `addNft` no longer accepts a `chainId` property in its options argument since this value can be retrieved by the `networkClientId` property and is therefore redundant.
163
232
  - **BREAKING**: The third and fourth arguments on NftController's `addNftVerifyOwnership` method, have been replaced with an options object containing optional properties `networkClientId`, `userAddress` and `source`. This method signature is more aligned with the options pattern for passing `networkClientId` and `userAddress` on this controller and elsewhere.
164
233
  - **BREAKING**: `checkAndUpdateSingleNftOwnershipStatus` on NftController no longer accepts a `chainId` in its options argument. This is replaced with an optional `networkClientId` property which can be used to fetch chainId.
165
- ***BREAKING**: The fourth argument of the `isNftOwner` method on `NftController` is now an options object with an optional `networkClientId` property. This method signature is more aligned with the options pattern for passing `networkClientId` on this controller and elsewhere.
234
+ **\*BREAKING**: The fourth argument of the `isNftOwner` method on `NftController` is now an options object with an optional `networkClientId` property. This method signature is more aligned with the options pattern for passing `networkClientId` on this controller and elsewhere.
166
235
  - **BREAKING**: `validateWatchNft` method on `NftController` is now private.
167
236
  - **BREAKING**: `detectNfts` on `NftDetectionController` now accepts a single object argument with optional properties `networkClientId` and `userAddress`, rather than taking these as two sequential arguments.
168
237
  - Bump dependency `@metamask/eth-query` from ^3.0.1 to ^4.0.0 ([#2028](https://github.com/MetaMask/core/pull/2028))
@@ -170,10 +239,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
170
239
  - Bump `@metamask/utils` from 8.1.0 to 8.2.0 ([#1957](https://github.com/MetaMask/core/pull/1957))
171
240
 
172
241
  ### Fixed
242
+
173
243
  - Add name and symbol to the payload returned by the `ERC1155Standard` class `getDetails` method for `ERC1155` contracts ([#1727](https://github.com/MetaMask/core/pull/1727))
174
244
 
175
245
  ## [18.0.0]
246
+
176
247
  ### Changed
248
+
177
249
  - **BREAKING**: `CurrencyRateController` is now keyed by `nativeCurrency` (i.e. ticker) for `conversionDate`, `conversionRate`, and `usdConversionRate` in the `currencyRates` object. `nativeCurrency`, `pendingNativeCurrency`, and `pendingCurrentCurrency` have been removed.
178
250
  - ```
179
251
  export type CurrencyRateState = {
@@ -188,27 +260,33 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
188
260
  >;
189
261
  };
190
262
  ```
191
- - **BREAKING**: `CurrencyRateController` now extends `PollingController` ([#1805](https://github.com/MetaMask/core/pull/1805))
263
+ - **BREAKING**: `CurrencyRateController` now extends `PollingController` ([#1805](https://github.com/MetaMask/core/pull/1805))
192
264
  - `start()` and `stop()` methods replaced with `startPollingByNetworkClientId()`, `stopPollingByPollingToken()`, and `stopAllPolling()`
193
- - **BREAKING**: `CurrencyRateController` now sends the `NetworkController:getNetworkClientById` action via messaging controller ([#1805](https://github.com/MetaMask/core/pull/1805))
265
+ - **BREAKING:** `CurrencyRateController` now sends the `NetworkController:getNetworkClientById` action via messaging controller ([#1805](https://github.com/MetaMask/core/pull/1805))
194
266
 
195
267
  ### Fixed
268
+
196
269
  - Parallelize network requests in assets controllers for performance enhancement ([#1801](https://github.com/MetaMask/core/pull/1801))
197
270
  - Fix token detection on accounts when user changes account after token detection request is inflight ([#1848](https://github.com/MetaMask/core/pull/1848))
198
271
 
199
272
  ## [17.0.0]
273
+
200
274
  ### Changed
275
+
201
276
  - **BREAKING:** Bump dependency on `@metamask/polling-controller` to ^1.0.0
202
277
  - Bump dependency and peer dependency on `@metamask/network-controller` to ^15.1.0
203
278
 
204
279
  ## [16.0.0]
280
+
205
281
  ### Added
282
+
206
283
  - Add way to start and stop different polling sessions for the same network client ID by providing extra scoping data ([#1776](https://github.com/MetaMask/core/pull/1776))
207
284
  - Add optional second argument to `stopPollingByPollingToken` (formerly `stopPollingByNetworkClientId`)
208
285
  - Add optional second argument to `onPollingCompleteByNetworkClientId`
209
286
  - Add support for token detection for Linea mainnet and Linea Goerli ([#1799](https://github.com/MetaMask/core/pull/1799))
210
287
 
211
288
  ### Changed
289
+
212
290
  - **BREAKING:** Bump dependency and peer dependency on `@metamask/network-controller` to ^15.0.0
213
291
  - **BREAKING:** Make `executePoll` in TokenListController private ([#1810](https://github.com/MetaMask/core/pull/1810))
214
292
  - **BREAKING:** Update TokenListController to rename `stopPollingByNetworkClientId` to `stopPollingByPollingToken` ([#1810](https://github.com/MetaMask/core/pull/1810))
@@ -218,7 +296,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
218
296
  - Fix support for NFT metadata stored outside IPFS ([#1772](https://github.com/MetaMask/core/pull/1772))
219
297
 
220
298
  ## [15.0.0]
299
+
221
300
  ### Changed
301
+
222
302
  - **BREAKING**: `NftController` now expects `getNetworkClientById` in constructor options ([#1698](https://github.com/MetaMask/core/pull/1698))
223
303
  - **BREAKING**: `NftController.addNft` function signature has changed ([#1698](https://github.com/MetaMask/core/pull/1698))
224
304
  - Previously
@@ -244,7 +324,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
244
324
  networkClientId?: NetworkClientId; // new
245
325
  },
246
326
  ```
247
- - `NftController.addNftVerifyOwnership`: Now accepts optional 3rd argument `networkClientId` which is used to fetch NFT metadata and determine by which chainId the added NFT should be stored in state. Also accepts optional 4th argument `source` used for metrics to identify the flow in which the NFT was added to the wallet. ([#1698](https://github.com/MetaMask/core/pull/1698))
327
+ - `NftController.addNftVerifyOwnership`: Now accepts optional 3rd argument `networkClientId` which is used to fetch NFT metadata and determine by which chainId the added NFT should be stored in state. Also accepts optional 4th argument `source` used for metrics to identify the flow in which the NFT was added to the wallet. ([#1698](https://github.com/MetaMask/core/pull/1698))
248
328
  - `NftController.isNftOwner`: Now accepts optional `networkClientId` which is used to instantiate the provider for the correct chain and call the NFT contract to verify ownership ([#1698](https://github.com/MetaMask/core/pull/1698))
249
329
  - `NftController.addNft` will use the chainId value derived from `networkClientId` if provided ([#1698](https://github.com/MetaMask/core/pull/1698))
250
330
  - `NftController.watchNft` options now accepts optional `networkClientId` which is used to fetch NFT metadata and determine by which chainId the added NFT should be stored in state ([#1698](https://github.com/MetaMask/core/pull/1698))
@@ -255,19 +335,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
255
335
  - Bump dependency and peer dependency on `@metamask/network-controller` to ^14.0.0
256
336
 
257
337
  ### Fixed
338
+
258
339
  - Fix bug in TokensController where batched `addToken` overwrote each other because mutex was acquired after reading state ([#1768](https://github.com/MetaMask/core/pull/1768))
259
340
 
260
341
  ## [14.0.0]
342
+
261
343
  ### Changed
344
+
262
345
  - Update TypeScript to v4.8.x ([#1718](https://github.com/MetaMask/core/pull/1718))
263
346
  - Update `@metamask/rpc-errors` to `^6.0.0` ([#1690](https://github.com/MetaMask/core/pull/1690))
264
347
 
265
348
  ### Removed
349
+
266
350
  - **BREAKING:** Remove AbortController polyfill
267
351
  - This package now assumes that the AbortController global exists
268
352
 
269
353
  ## [13.0.0]
354
+
270
355
  ### Changed
356
+
271
357
  - **BREAKING**: `TokensController` now expects `getNetworkClientById` in constructor options ([#1676](https://github.com/MetaMask/core/pull/1676))
272
358
  - **BREAKING**: `TokensController.addToken` now accepts a single options object ([#1676](https://github.com/MetaMask/core/pull/1676))
273
359
  ```
@@ -281,7 +367,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
281
367
  networkClientId?: NetworkClientId;
282
368
  }
283
369
  ```
284
- - **BREAKING**: Bump peer dependency on `@metamask/network-controller` to ^13.0.0 ([#1633](https://github.com/MetaMask/core/pull/1633))
370
+ - **BREAKING:** Bump peer dependency on `@metamask/network-controller` to ^13.0.0 ([#1633](https://github.com/MetaMask/core/pull/1633))
285
371
  - **CHANGED**: `TokensController.addToken` will use the chain ID value derived from state for `networkClientId` if provided ([#1676](https://github.com/MetaMask/core/pull/1676))
286
372
  - **CHANGED**: `TokensController.addTokens` now accepts an optional `networkClientId` as the last parameter ([#1676](https://github.com/MetaMask/core/pull/1676))
287
373
  - **CHANGED**: `TokensController.addTokens` will use the chain ID value derived from state for `networkClientId` if provided ([#1676](https://github.com/MetaMask/core/pull/1676))
@@ -290,33 +376,39 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
290
376
  - Bump dependency on `@metamask/preferences-controller` to ^4.4.1 ([#1676](https://github.com/MetaMask/core/pull/1676))
291
377
 
292
378
  ## [12.0.0]
379
+
293
380
  ### Added
381
+
294
382
  - Add `AssetsContractController` methods `getProvider`, `getChainId`, `getERC721Standard`, and `getERC1155Standard` ([#1638](https://github.com/MetaMask/core/pull/1638))
295
383
 
296
384
  ### Changed
385
+
297
386
  - **BREAKING**: Add `getNetworkClientById` to `AssetsContractController` constructor options ([#1638](https://github.com/MetaMask/core/pull/1638))
298
- - Add optional `networkClientId` parameter to various `AssetContractController` methods ([#1638](https://github.com/MetaMask/core/pull/1638))
299
- - The affected methods are:
300
- - `getERC20BalanceOf`
301
- - `getERC20TokenDecimals`
302
- - `getERC20TokenName`
303
- - `getERC721NftTokenId`
304
- - `getTokenStandardAndDetails`
305
- - `getERC721TokenURI`
306
- - `getERC721AssetName`
307
- - `getERC721AssetSymbol`
308
- - `getERC721OwnerOf`
309
- - `getERC1155TokenURI`
310
- - `getERC1155BalanceOf`
311
- - `transferSingleERC1155`
312
- - `getBalancesInSingleCall`
387
+ - Add optional `networkClientId` parameter to various `AssetContractController` methods ([#1638](https://github.com/MetaMask/core/pull/1638))
388
+ - The affected methods are:
389
+ - `getERC20BalanceOf`
390
+ - `getERC20TokenDecimals`
391
+ - `getERC20TokenName`
392
+ - `getERC721NftTokenId`
393
+ - `getTokenStandardAndDetails`
394
+ - `getERC721TokenURI`
395
+ - `getERC721AssetName`
396
+ - `getERC721AssetSymbol`
397
+ - `getERC721OwnerOf`
398
+ - `getERC1155TokenURI`
399
+ - `getERC1155BalanceOf`
400
+ - `transferSingleERC1155`
401
+ - `getBalancesInSingleCall`
313
402
 
314
403
  ## [11.1.0]
404
+
315
405
  ### Added
406
+
316
407
  - Add `tokenURI` to `NftMetadata` type ([#1577](https://github.com/MetaMask/core/pull/1577))
317
408
  - Populate token URL for NFT metadata under `tokenURI` ([#1577](https://github.com/MetaMask/core/pull/1577))
318
409
 
319
410
  ### Changed
411
+
320
412
  - Bump dependency and peer dependency on `@metamask/approval-controller` to ^3.5.1
321
413
  - Bump dependency on `@metamask/base-controller` to ^3.2.1
322
414
  - Bump dependency on `@metamask/controller-utils` to ^4.3.2
@@ -325,38 +417,47 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
325
417
  - Update NftController to add fallback for when IPFS gateway is disabled ([#1577](https://github.com/MetaMask/core/pull/1577))
326
418
 
327
419
  ## [11.0.1]
420
+
328
421
  ### Changed
422
+
329
423
  - Replace `eth-query` ^2.1.2 with `@metamask/eth-query` ^3.0.1 ([#1546](https://github.com/MetaMask/core/pull/1546))
330
424
 
331
425
  ## [11.0.0]
426
+
332
427
  ### Added
428
+
333
429
  - Add a `stop` method to stop polling
334
430
 
335
431
  ### Changed
432
+
336
433
  - **BREAKING**: New required constructor parameters for the `TokenRatesController` ([#1497](https://github.com/MetaMask/core/pull/1497), [#1511](https://github.com/MetaMask/core/pull/1511))
337
434
  - The new required parameters are `ticker`, `onSelectedAddress`, and `onPreferencesStateChange`
338
- - **BREAKING**: Remove `onCurrencyRateStateChange` constructor parameter from `TokenRatesController` ([#1496](https://github.com/MetaMask/core/pull/1496))
339
- - **BREAKING**: Disable `TokenRatesController` automatic polling ([#1501](https://github.com/MetaMask/core/pull/1501))
435
+ - **BREAKING:** Remove `onCurrencyRateStateChange` constructor parameter from `TokenRatesController` ([#1496](https://github.com/MetaMask/core/pull/1496))
436
+ - **BREAKING:** Disable `TokenRatesController` automatic polling ([#1501](https://github.com/MetaMask/core/pull/1501))
340
437
  - Polling must be started explicitly by calling the `start` method
341
438
  - The token rates are not updated upon state changes when polling is disabled.
342
- - **BREAKING**: Replace the `poll` method with `start` ([#1501](https://github.com/MetaMask/core/pull/1501))
439
+ - **BREAKING:** Replace the `poll` method with `start` ([#1501](https://github.com/MetaMask/core/pull/1501))
343
440
  - The `start` method does not offer a way to change the interval. That must be done by calling `.configure` instead
344
- - **BREAKING**: Remove `TokenRatecontroller` setter for `chainId` and `tokens` properties ([#1505](https://github.com/MetaMask/core/pull/1505))
441
+ - **BREAKING:** Remove `TokenRatecontroller` setter for `chainId` and `tokens` properties ([#1505](https://github.com/MetaMask/core/pull/1505))
345
442
  - Bump @metamask/abi-utils from 1.2.0 to 2.0.1 ([#1525](https://github.com/MetaMask/core/pull/1525))
346
443
  - Update `@metamask/utils` to `^6.2.0` ([#1514](https://github.com/MetaMask/core/pull/1514))
347
444
  - Remove unnecessary `babel-runtime` dependency ([#1504](https://github.com/MetaMask/core/pull/1504))
348
445
 
349
446
  ### Fixed
447
+
350
448
  - Fix bug where token rates were incorrect after first update if initialized with a non-Ethereum selected network ([#1497](https://github.com/MetaMask/core/pull/1497))
351
449
  - Fix bug where token rates would be invalid if event handlers were triggered in the wrong order ([#1496](https://github.com/MetaMask/core/pull/1496), [#1511](https://github.com/MetaMask/core/pull/1511))
352
450
  - Prevent redundant token rate updates ([#1512](https://github.com/MetaMask/core/pull/1512))
353
451
 
354
452
  ## [10.0.0]
453
+
355
454
  ### Added
455
+
356
456
  - The method `getERC20TokenName` has been added to `AssetsContractController` ([#1127](https://github.com/MetaMask/core/pull/1127))
357
457
  - This method gets the token name from the token contract
358
458
 
359
459
  ### Changed
460
+
360
461
  - **BREAKING:** The tokens controller now requires `onTokenListStateChange` and `getERC20TokenName` as constructor parameters ([#1127](https://github.com/MetaMask/core/pull/1127))
361
462
  - The `getERC20TokenName` method is used to get the token name for tokens added via `wallet_watchAsset`
362
463
  - The `onTokenListStateChange` method is used to trigger a name update when the token list changes. On each change, token names are copied from the token list if they're missing from token controller state.
@@ -367,19 +468,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
367
468
  - The `Token` type now includes an optional `name` field ([#1127](https://github.com/MetaMask/core/pull/1127))
368
469
 
369
470
  ## [9.2.0]
471
+
370
472
  ### Added
473
+
371
474
  - Add validation that the nft standard matches the type argument of a `wallet_watchAsset` request when type is 'ERC721' or 'ERC1155' ([#1455](https://github.com/MetaMask/core/pull/1455))
372
475
 
373
476
  ## [9.1.0]
477
+
374
478
  ### Added
479
+
375
480
  - Add a fifth argument, `source`, to NftController's `addNft` method ([#1417](https://github.com/MetaMask/core/pull/1417))
376
481
  - This argument can be used to specify whether the NFT was detected, added manually, or suggested by a dapp
377
482
 
378
483
  ### Fixed
484
+
379
485
  - Fix `watchNft` in NftController to ensure that if the network changes before the user accepts the request, the NFT is added to the chain ID and address before the request was initiated ([#1417](https://github.com/MetaMask/core/pull/1417))
380
486
 
381
487
  ## [9.0.0]
488
+
382
489
  ### Added
490
+
383
491
  - **BREAKING**: Add required options `getSelectedAddress` and `getMultiAccountBalancesEnabled` to AccountTrackerController constructor and make use of them when refreshing account balances ([#1146](https://github.com/MetaMask/core/pull/1146))
384
492
  - Previously, the controller would refresh all account balances, but these options can be used to only refresh the currently selected account
385
493
  - **BREAKING:** Add logic to support validating and adding ERC721 and ERC1155 tokens to NFTController state via `wallet_watchAsset` API. ([#1173](https://github.com/MetaMask/core/pull/1173), [#1406](https://github.com/MetaMask/core/pull/1406))
@@ -387,15 +495,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
387
495
  - The `NFTController` now requires an instance of a ControllerMessenger to be passed to its constructor. This is messenger is used to pass the `watchNFT` message to the `ApprovalController`.
388
496
 
389
497
  ### Changed
498
+
390
499
  - Add dependency on `@ethersproject/address` ([#1173](https://github.com/MetaMask/core/pull/1173))
391
500
  - Replace `eth-rpc-errors` with `@metamask/rpc-errors` ([#1173](https://github.com/MetaMask/core/pull/1173))
392
501
 
393
502
  ## [8.0.0]
503
+
394
504
  ### Added
505
+
395
506
  - Support NFT detection on Ethereum Mainnet custom RPC endpoints ([#1360](https://github.com/MetaMask/core/pull/1360))
396
507
  - Enable token detection for the Aurora network ([#1327](https://github.com/MetaMask/core/pull/1327))
397
508
 
398
509
  ### Changed
510
+
399
511
  - **BREAKING:** Bump to Node 16 ([#1262](https://github.com/MetaMask/core/pull/1262))
400
512
  - **BREAKING:** Change format of chain ID in state to 0x-prefixed hex string ([#1367](https://github.com/MetaMask/core/pull/1367))
401
513
  - The functions `isTokenDetectionSupportedForNetwork` and `formatIconUrlWithProxy` now expect a chain ID as type `Hex` rather than as a decimal `string`
@@ -415,17 +527,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
415
527
  - The tokens controller `addDetectedTokens` method now accepts the `chainId` property of the `detectionDetails` parameter to be of type `Hex` rather than decimal `string`.
416
528
  - The tokens controller state properties `allTokens`, `allIgnoredTokens`, and `allDetectedTokens` are now keyed by chain ID in `Hex` format rather than decimal `string`.
417
529
  - This requires a state migration
418
- - **BREAKING**: Use approval controller for suggested assets ([#1261](https://github.com/MetaMask/core/pull/1261), [#1268](https://github.com/MetaMask/core/pull/1268))
530
+ - **BREAKING:** Use approval controller for suggested assets ([#1261](https://github.com/MetaMask/core/pull/1261), [#1268](https://github.com/MetaMask/core/pull/1268))
419
531
  - The actions `ApprovalController:acceptRequest` and `ApprovalController:rejectRequest` are no longer required by the token controller messenger.
420
532
  - The `suggestedAssets` state has been removed, which means that suggested assets are no longer persisted in state
421
533
  - The return type for `watchAsset` has changed. It now returns a Promise that settles after the request has been confirmed or rejected.
422
534
  - **BREAKING:** Initialize controllers with the current network ([#1361](https://github.com/MetaMask/core/pull/1361))
423
535
  - The following controllers now have a new `chainId` required constructor parameter:
424
- * `AssetsContractController`
425
- * `NftController`
426
- * `NftDetectionController`
427
- * `TokenRatesController`
428
- * `TokensController`
536
+ - `AssetsContractController`
537
+ - `NftController`
538
+ - `NftDetectionController`
539
+ - `TokenRatesController`
540
+ - `TokensController`
429
541
  - **BREAKING:** The token list controller messenger requires the `NetworkController:stateChange` event instead of the `NetworkController:providerConfigChange` event ([#1329](https://github.com/MetaMask/core/pull/1329))
430
542
  - **BREAKING:** The token list controller `onNetworkStateChange` option now has a more restrictive type ([#1329](https://github.com/MetaMask/core/pull/1329))
431
543
  - The event handler parameter type has been changed from `NetworkState | ProviderConfig` to `NetworkState`
@@ -437,42 +549,58 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
437
549
  - Bump @metamask/utils from 5.0.1 to 5.0.2 ([#1271](https://github.com/MetaMask/core/pull/1271))
438
550
 
439
551
  ### Removed
552
+
440
553
  - **BREAKING:** Remove the `networkType` configuration option from the NFT detection controller, NFT controller, and tokens controller ([#1360](https://github.com/MetaMask/core/pull/1360), [#1359](https://github.com/MetaMask/core/pull/1359))
441
554
  - **BREAKING:** Remove the `SuggestedAssetMeta` and `SuggestedAssetMetaBase` types from the token controller ([#1268](https://github.com/MetaMask/core/pull/1268))
442
555
  - **BREAKING:** Remove the `acceptWatchAsset` and `rejectWatchAsset` methods from the token controller ([#1268](https://github.com/MetaMask/core/pull/1268))
443
556
  - Suggested assets can be accepted or rejected using the approval controller instead
444
557
 
445
558
  ## [7.0.0]
559
+
446
560
  ### Changed
561
+
447
562
  - **BREAKING**: peerDeps: @metamask/network-controller@6.0.0->8.0.0 ([#1196](https://github.com/MetaMask/core/pull/1196))
448
563
 
449
564
  ## [6.0.0]
565
+
450
566
  ### Changed
567
+
451
568
  - **BREAKING:** Create approval requests using `@metamask/approval-controller` ([#1166](https://github.com/MetaMask/core/pull/1166))
452
569
 
453
570
  ## [5.1.0]
571
+
454
572
  ### Added
573
+
455
574
  - Support watching assets on a specific account ([#1124](https://github.com/MetaMask/core/pull/1124))
456
575
 
457
576
  ## [5.0.1]
577
+
458
578
  ### Changed
579
+
459
580
  - Update `@metamask/contract-metadata` from 2.1.0 to 2.3.1 ([#1141](https://github.com/MetaMask/core/pull/1141))
460
581
 
461
582
  ## [5.0.0]
583
+
462
584
  ### Removed
585
+
463
586
  - **BREAKING:** Remove `isomorphic-fetch` ([#1106](https://github.com/MetaMask/controllers/pull/1106))
464
587
  - Consumers must now import `isomorphic-fetch` or another polyfill themselves if they are running in an environment without `fetch`
465
588
 
466
589
  ## [4.0.1]
590
+
467
591
  ### Fixed
592
+
468
593
  - Update Nft Controller to add the NFT back to its own group if we are re-importing it ([#1082](https://github.com/MetaMask/core/pull/1082))
469
594
 
470
595
  ## [4.0.0]
596
+
471
597
  ### Added
598
+
472
599
  - Add Sepolia support to the currency rate controller ([#1041](https://github.com/MetaMask/controllers/pull/1041))
473
600
  - The currency rate controller will now treat Sepolia as a testnet, and return the Mainnet exchange rate when asked for the Sepolia exchange rate.
474
601
 
475
602
  ### Changed
603
+
476
604
  - **BREAKING:** Update `@metamask/network-controller` peer dependency to v3 ([#1041](https://github.com/MetaMask/controllers/pull/1041))
477
605
  - **BREAKING:** Migrate from `metaswap` to `metafi` subdomain for OpenSea proxy and token icons API ([#1060](https://github.com/MetaMask/core/pull/1060))
478
606
  - Rename this repository to `core` ([#1031](https://github.com/MetaMask/controllers/pull/1031))
@@ -480,29 +608,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
480
608
  - Update `@metamask/controller-utils` package ([#1041](https://github.com/MetaMask/controllers/pull/1041))
481
609
 
482
610
  ## Removed
611
+
483
612
  - **BREAKING**: Drop support for Ropsten, Rinkeby, and Kovan ([#1041](https://github.com/MetaMask/controllers/pull/1041))
484
613
  - The currency rate controller no longer has special handling of these three networks. It used to return the Mainnet exchange rate for these three networks, but now it includes no special handling for them.
485
614
  - The NFT controller no longer supports the Rinkeby OpenSea test API.
486
615
 
487
616
  ## [3.0.1]
617
+
488
618
  ### Changed
619
+
489
620
  - Export `isTokenDetectionSupportedForNetwork` function ([#1034](https://github.com/MetaMask/controllers/pull/1034))
490
621
  - Update `@metamask/contract-metadata` from 1.35.0 to 2.1.0 ([#1013](https://github.com/MetaMask/controllers/pull/1013))
491
622
 
492
623
  ### Fixed
624
+
493
625
  - Fix token controller state updates ([#1015](https://github.com/MetaMask/controllers/pull/1015))
494
626
  - Attempts to empty the list of "added", "ignored", or "detected" tokens were not saved in state correctly, resulting in that operation being undone after switching account or network.
495
627
 
496
628
  ## [3.0.0]
629
+
497
630
  ### Changed
631
+
498
632
  - **BREAKING:** A new private property, controlled by the `start` and `stop` methods, is added to the CurrencyRateController: `enabled`. When this is false, no network requests will be made from the controller. Previously, setNativeCurrency or setCurrentCurrency would trigger a network request. That is now prevented if `enabled` is false. ([#1002](https://github.com/MetaMask/core/pull/1002))
499
633
 
500
634
  ### Fixed
635
+
501
636
  - The TokenRatesController no longer overwrites the `disabled` config property passed to the constructor, allowing the controller to be instantiated with `config.disabled` set to either true or false. ([#1002](https://github.com/MetaMask/core/pull/1002))
502
637
  - This package will now warn if a required package is not present ([#1003](https://github.com/MetaMask/core/pull/1003))
503
638
 
504
639
  ## [2.0.0]
640
+
505
641
  ### Changed
642
+
506
643
  - **BREAKING:** Update `onNetworkStateChange`, a constructor option for several controllers, to take an object with a `providerConfig` property instead of `provider` ([#995](https://github.com/MetaMask/core/pull/995))
507
644
  - This affects:
508
645
  - AssetsContractController
@@ -516,22 +653,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
516
653
  - Relax dependencies on `@metamask/base-controller`, `@metamask/controller-utils`, `@metamask/network-controller`, and `@metamask/preferences-controller` (use `^` instead of `~`) ([#998](https://github.com/MetaMask/core/pull/998))
517
654
 
518
655
  ## [1.0.1]
656
+
519
657
  ### Fixed
658
+
520
659
  - Fix race condition where some token detections can get mistakenly added to the wrong account ([#956](https://github.com/MetaMask/core/pull/956))
521
660
 
522
661
  ## [1.0.0]
662
+
523
663
  ### Added
664
+
524
665
  - Initial release
666
+
525
667
  - As a result of converting our shared controllers repo into a monorepo ([#831](https://github.com/MetaMask/core/pull/831)), we've created this package from select parts of [`@metamask/controllers` v33.0.0](https://github.com/MetaMask/core/tree/v33.0.0), namely:
668
+
526
669
  - Everything in `src/assets`
527
670
  - Asset-related functions from `src/util.ts` and accompanying tests
528
671
 
529
672
  All changes listed after this point were applied to this package following the monorepo conversion.
530
673
 
531
674
  ### Changed
675
+
532
676
  - Use Ethers for AssetsContractController ([#845](https://github.com/MetaMask/core/pull/845))
533
677
 
534
- [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@24.0.0...HEAD
678
+ [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@25.0.0...HEAD
679
+ [25.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@24.0.0...@metamask/assets-controllers@25.0.0
535
680
  [24.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@23.1.0...@metamask/assets-controllers@24.0.0
536
681
  [23.1.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@23.0.0...@metamask/assets-controllers@23.1.0
537
682
  [23.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@22.0.0...@metamask/assets-controllers@23.0.0