@metamask-previews/assets-controllers 25.0.0-preview.8cdddaf → 25.0.0-preview.a3a3121

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 (35) hide show
  1. package/CHANGELOG.md +163 -38
  2. package/dist/AssetsContractController.d.ts +4 -4
  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 +12 -14
  8. package/dist/NftController.js.map +1 -1
  9. package/dist/Standards/ERC20Standard.d.ts.map +1 -1
  10. package/dist/Standards/ERC20Standard.js +4 -6
  11. package/dist/Standards/ERC20Standard.js.map +1 -1
  12. package/dist/Standards/NftStandards/ERC721/ERC721Standard.d.ts.map +1 -1
  13. package/dist/Standards/NftStandards/ERC721/ERC721Standard.js +2 -3
  14. package/dist/Standards/NftStandards/ERC721/ERC721Standard.js.map +1 -1
  15. package/dist/TokenBalancesController.d.ts +12 -10
  16. package/dist/TokenBalancesController.d.ts.map +1 -1
  17. package/dist/TokenBalancesController.js +13 -16
  18. package/dist/TokenBalancesController.js.map +1 -1
  19. package/dist/TokenDetectionController.d.ts +32 -18
  20. package/dist/TokenDetectionController.d.ts.map +1 -1
  21. package/dist/TokenDetectionController.js +141 -60
  22. package/dist/TokenDetectionController.js.map +1 -1
  23. package/dist/TokensController.d.ts +20 -20
  24. package/dist/TokensController.d.ts.map +1 -1
  25. package/dist/TokensController.js +16 -23
  26. package/dist/TokensController.js.map +1 -1
  27. package/dist/index.d.ts +6 -3
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +7 -4
  30. package/dist/index.js.map +1 -1
  31. package/package.json +7 -2
  32. package/dist/Standards/standards-types.d.ts +0 -15
  33. package/dist/Standards/standards-types.d.ts.map +0 -1
  34. package/dist/Standards/standards-types.js +0 -3
  35. 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,14 +7,42 @@ 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 the `PreferencesController:getState` messenger action. ([#3775](https://github.com/MetaMask/core/pull/3775/))
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/))
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 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.
23
+ - **BREAKING:** The constructor for `TokenDetectionController` expects a new required proprerty `trackMetaMetricsEvent`, which defines the callback that is called in the `detectTokens` method.
24
+ - **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).
25
+ - **BREAKING:** The `TokensState` type is now defined as a type alias rather than an interface. ([#3690](https://github.com/MetaMask/core/pull/3690/))
26
+ - This is breaking because it could affect how this type is used with other types, such as `Json`, which does not support TypeScript interfaces.
27
+
28
+ ### Removed
29
+
30
+ - **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/))
31
+ - **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/))
32
+ - **BREAKING:** `TokensController` constructor no longer accepts options `onPreferencesStateChange`, `onNetworkDidChange`, `onTokenListStateChange`, `getNetworkClientById`. ([#3690](https://github.com/MetaMask/core/pull/3690/))
33
+ - **BREAKING:** `TokenBalancesController` constructor no longer accepts options `onTokensStateChange`, `getSelectedAddress`. ([#3690](https://github.com/MetaMask/core/pull/3690/))
34
+
9
35
  ## [25.0.0]
36
+
10
37
  ### Added
38
+
11
39
  - Add Linea to price api supported chains ([#3797](https://github.com/MetaMask/core/pull/3797))
12
40
 
13
41
  ### Changed
42
+
14
43
  - **BREAKING:** Convert `TokenBalancesController` to `BaseControllerV2` ([#3750](https://github.com/MetaMask/core/pull/3750))
15
- - 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.
16
- - State now saves tokens balances as strings and not as a BNs.
44
+ - 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.
45
+ - State now saves tokens balances as strings and not as a BNs.
17
46
  - Additional BN export has been removed as it was intended to be removed in the next major release.
18
47
  - **BREAKING:** Bump `@metamask/approval-controller` peer dependency to `^5.1.2` ([#3821](https://github.com/MetaMask/core/pull/3821))
19
48
  - **BREAKING:** Bump `@metamask/network-controller` peer dependency to `^17.2.0` ([#3821](https://github.com/MetaMask/core/pull/3821))
@@ -24,33 +53,41 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
24
53
  - Bump `@metamask/polling-controller` to `^5.0.0` ([#3821](https://github.com/MetaMask/core/pull/3821))
25
54
 
26
55
  ## [24.0.0]
56
+
27
57
  ### Added
58
+
28
59
  - Add `getDefaultTokenListState` function to `TokenListController` ([#3744](https://github.com/MetaMask/core/pull/3744))
29
60
  - Add `getDefaultNftState` function to the `NftController` ([#3742](https://github.com/MetaMask/core/pull/3742))
30
61
  - Add `getDefaultTokensState` function to the `TokensController` ([#3743](https://github.com/MetaMask/core/pull/3743))
31
62
 
32
63
  ### Changed
64
+
33
65
  - **BREAKING:** Bump `@metamask/preferences-controller` to ^6.0.0
34
66
  - Price API perf improvements ([#3753](https://github.com/MetaMask/core/pull/3753), [#3755](https://github.com/MetaMask/core/pull/3755))
35
67
  - Reduce token batch size from 100 to 30
36
68
  - Sort token addresses in query params for more cache hits
37
69
 
38
70
  ## [23.1.0]
71
+
39
72
  ### Added
73
+
40
74
  - Add support to `CodefiTokenPricesServiceV2` for tracking degraded service ([#3691](https://github.com/MetaMask/core/pull/3691))
41
75
  - 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.
42
76
 
43
77
  ## [23.0.0]
78
+
44
79
  ### Added
80
+
45
81
  - Add `onBreak` handler to `CodefiTokenPricesServiceV2` ([#3677](https://github.com/MetaMask/core/pull/3677))
46
82
  - This allows listening for "circuit breaks", which can indicate an outage. Useful for metrics.
47
83
  - Add `fetchTokenContractExchangeRates` utility method ([#3657](https://github.com/MetaMask/core/pull/3657))
48
84
  - `TokenListController` now exports a `TokenListControllerMessenger` type ([#3609](https://github.com/MetaMask/core/pull/3609)).
49
85
  - `TokenDetectionController` exports types `TokenDetectionControllerMessenger`, `TokenDetectionControllerActions`, `TokenDetectionControllerGetStateAction`, `TokenDetectionControllerEvents`, `TokenDetectionControllerStateChangeEvent` ([#3609](https://github.com/MetaMask/core/pull/3609)).
50
- - 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)).
86
+ - 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)).
51
87
  - 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.
52
88
 
53
89
  ### Changed
90
+
54
91
  - **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))
55
92
  - **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))
56
93
  - **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))
@@ -63,19 +100,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
63
100
  - Bump `@metamask/controller-utils` from `8.0.0` to `^8.0.1` ([#3695](https://github.com/MetaMask/core/pull/3695))
64
101
 
65
102
  ### Fixed
103
+
66
104
  - Fix error caused by OpenSea API rename of `supply` to `total_supply` ([#3692](https://github.com/MetaMask/core/pull/3692))
67
105
  - Fix `CodefiTokenPricesServiceV2` support for Shiden ([#3683](https://github.com/MetaMask/core/pull/3683))
68
106
  - Improve how `CodefiTokenPricesServiceV2` handles token price update failures ([#3687](https://github.com/MetaMask/core/pull/3687))
69
107
  - 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.
70
108
 
71
109
  ## [22.0.0]
110
+
72
111
  ### Changed
112
+
73
113
  - **BREAKING:** OpenSea V2 API is used instead of V1 ([#3654](https://github.com/MetaMask/core/pull/3654))
74
- - `NftDetectionController` constructor now requires the `NftController.getNftApi` function.
114
+ - `NftDetectionController` constructor now requires the `NftController.getNftApi` function.
75
115
  - NFT controllers will no longer return `last_sale` information for NFTs fetched after the OpenSea V2 update
76
116
 
77
117
  ## [21.0.0]
118
+
78
119
  ### Added
120
+
79
121
  - 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))
80
122
  - 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.
81
123
  - The `CodefiTokenPricesServiceV2` will retry if the token price update fails
@@ -90,6 +132,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
90
132
  - Support token detection on Arbitrum and Optimism ([#2035](https://github.com/MetaMask/core/pull/2035))
91
133
 
92
134
  ### Changed
135
+
93
136
  - **BREAKING:** `TokenRatesController` now takes a required argument `tokenPricesService` ([#3600](https://github.com/MetaMask/core/pull/3600))
94
137
  - This object is responsible for fetching the prices for tokens held by this controller.
95
138
  - **BREAKING:** Update signature of `TokenRatesController.updateExchangeRatesByChainId` ([#3600](https://github.com/MetaMask/core/pull/3600), [#3653](https://github.com/MetaMask/core/pull/3653))
@@ -98,8 +141,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
98
141
  - These are needed for the new "polling by `networkClientId`" feature
99
142
  - **BREAKING:** `AccountTrackerController` has a new required state property, `accountByChainId`([#3586](https://github.com/MetaMask/core/pull/3586))
100
143
  - 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.
101
- - **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))
102
- - **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))
144
+ - **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))
145
+ - **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))
103
146
  - The `TokensController` constructor no longer accepts a `getERC20TokenName` option. It was no longer needed due to this change.
104
147
  - Add new method `_getProvider`, though this is intended for internal use and should not be called externally.
105
148
  - Additionally, if the symbol and decimals are defined in the contract, they are no longer required to be passed to `watchAsset`
@@ -123,18 +166,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
123
166
  - Add dependencies `cockatiel` and `lodash` ([#3586](https://github.com/MetaMask/core/pull/3586), [#3655](https://github.com/MetaMask/core/pull/3655))
124
167
 
125
168
  ### Removed
169
+
126
170
  - **BREAKING:** Remove `fetchExchangeRate` method from TokenRatesController ([#3600](https://github.com/MetaMask/core/pull/3600))
127
171
  - 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.
128
172
  - **BREAKING:** Remove `getChainSlug` method from TokenRatesController ([#3600](https://github.com/MetaMask/core/pull/3600))
129
173
  - This method was previously used in TokenRatesController to access the CoinGecko API. There is no equivalent.
130
174
  - **BREAKING:** Remove `CoinGeckoResponse` and `CoinGeckoPlatform` types ([#3600](https://github.com/MetaMask/core/pull/3600))
131
175
  - These types were previously used in TokenRatesController to represent data returned from the CoinGecko API. There is no equivalent.
132
- - **BREAKING**: The TokenRatesController now only supports updating and polling rates for tokens tracked by the TokensController ([#3639](https://github.com/MetaMask/core/pull/3639))
176
+ - **BREAKING:** The TokenRatesController now only supports updating and polling rates for tokens tracked by the TokensController ([#3639](https://github.com/MetaMask/core/pull/3639))
133
177
  - The `tokenAddresses` option has been removed from `startPollingByNetworkClientId`
134
178
  - The `tokenContractAddresses` option has been removed from `updateExchangeRatesByChainId`
135
- - **BREAKING**: `TokenRatesController.fetchAndMapExchangeRates` is no longer exposed publicly ([#3621](https://github.com/MetaMask/core/pull/3621))
179
+ - **BREAKING:** `TokenRatesController.fetchAndMapExchangeRates` is no longer exposed publicly ([#3621](https://github.com/MetaMask/core/pull/3621))
136
180
 
137
181
  ### Fixed
182
+
138
183
  - 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))
139
184
  - 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.
140
185
  - Prevent redundant overlapping token rate updates in `TokenRatesController` ([#3635](https://github.com/MetaMask/core/pull/3635))
@@ -146,7 +191,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
146
191
  - This affects `watchNft` and `addNft` methods
147
192
 
148
193
  ## [20.0.0]
194
+
149
195
  ### Added
196
+
150
197
  - **BREAKING**: `TokenRatesControllerState` now has required `contractExchangeRatesByChainId` property which an object keyed by `chainId` and `nativeCurrency` ([#2015](https://github.com/MetaMask/core/pull/2015))
151
198
  - **BREAKING**: `TokenRatesController` constructor params now requires `getNetworkClientById` ([#2015](https://github.com/MetaMask/core/pull/2015))
152
199
  - Add types `CurrencyRateControllerEvents` and `CurrencyRateControllerActions` ([#2029](https://github.com/MetaMask/core/pull/2029))
@@ -163,6 +210,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
163
210
  - `TokenRatesController.fetchAndMapExchangeRates()` now accepts an optional `tokenAddresses` as the last parameter ([#2015](https://github.com/MetaMask/core/pull/2015))
164
211
 
165
212
  ### Changed
213
+
166
214
  - **BREAKING:** Bump dependency on `@metamask/base-controller` to ^4.0.0 ([#2063](https://github.com/MetaMask/core/pull/2063))
167
215
  - This is breaking because the type of the `messenger` has backward-incompatible changes. See the changelog for this package for more.
168
216
  - Bump `@metamask/approval-controller` to ^5.0.0 ([#2063](https://github.com/MetaMask/core/pull/2063))
@@ -172,14 +220,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
172
220
  - Bump `@metamask/preferences-controller` to ^5.0.0 ([#2063](https://github.com/MetaMask/core/pull/2063))
173
221
 
174
222
  ## [19.0.0]
223
+
175
224
  ### Changed
225
+
176
226
  - **BREAKING:** Bump dependency and peer dependency on `@metamask/network-controller` to ^16.0.0
177
227
  - Add optional `networkClientId` and `userAddress` args to remaining `NftController` public methods ([#2006](https://github.com/MetaMask/core/pull/2006))
178
228
  - `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.
179
229
  - **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.
180
230
  - **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.
181
231
  - **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.
182
- ***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.
232
+ **\*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.
183
233
  - **BREAKING**: `validateWatchNft` method on `NftController` is now private.
184
234
  - **BREAKING**: `detectNfts` on `NftDetectionController` now accepts a single object argument with optional properties `networkClientId` and `userAddress`, rather than taking these as two sequential arguments.
185
235
  - Bump dependency `@metamask/eth-query` from ^3.0.1 to ^4.0.0 ([#2028](https://github.com/MetaMask/core/pull/2028))
@@ -187,10 +237,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
187
237
  - Bump `@metamask/utils` from 8.1.0 to 8.2.0 ([#1957](https://github.com/MetaMask/core/pull/1957))
188
238
 
189
239
  ### Fixed
240
+
190
241
  - 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))
191
242
 
192
243
  ## [18.0.0]
244
+
193
245
  ### Changed
246
+
194
247
  - **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.
195
248
  - ```
196
249
  export type CurrencyRateState = {
@@ -205,27 +258,33 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
205
258
  >;
206
259
  };
207
260
  ```
208
- - **BREAKING**: `CurrencyRateController` now extends `PollingController` ([#1805](https://github.com/MetaMask/core/pull/1805))
261
+ - **BREAKING**: `CurrencyRateController` now extends `PollingController` ([#1805](https://github.com/MetaMask/core/pull/1805))
209
262
  - `start()` and `stop()` methods replaced with `startPollingByNetworkClientId()`, `stopPollingByPollingToken()`, and `stopAllPolling()`
210
- - **BREAKING**: `CurrencyRateController` now sends the `NetworkController:getNetworkClientById` action via messaging controller ([#1805](https://github.com/MetaMask/core/pull/1805))
263
+ - **BREAKING:** `CurrencyRateController` now sends the `NetworkController:getNetworkClientById` action via messaging controller ([#1805](https://github.com/MetaMask/core/pull/1805))
211
264
 
212
265
  ### Fixed
266
+
213
267
  - Parallelize network requests in assets controllers for performance enhancement ([#1801](https://github.com/MetaMask/core/pull/1801))
214
268
  - Fix token detection on accounts when user changes account after token detection request is inflight ([#1848](https://github.com/MetaMask/core/pull/1848))
215
269
 
216
270
  ## [17.0.0]
271
+
217
272
  ### Changed
273
+
218
274
  - **BREAKING:** Bump dependency on `@metamask/polling-controller` to ^1.0.0
219
275
  - Bump dependency and peer dependency on `@metamask/network-controller` to ^15.1.0
220
276
 
221
277
  ## [16.0.0]
278
+
222
279
  ### Added
280
+
223
281
  - 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))
224
282
  - Add optional second argument to `stopPollingByPollingToken` (formerly `stopPollingByNetworkClientId`)
225
283
  - Add optional second argument to `onPollingCompleteByNetworkClientId`
226
284
  - Add support for token detection for Linea mainnet and Linea Goerli ([#1799](https://github.com/MetaMask/core/pull/1799))
227
285
 
228
286
  ### Changed
287
+
229
288
  - **BREAKING:** Bump dependency and peer dependency on `@metamask/network-controller` to ^15.0.0
230
289
  - **BREAKING:** Make `executePoll` in TokenListController private ([#1810](https://github.com/MetaMask/core/pull/1810))
231
290
  - **BREAKING:** Update TokenListController to rename `stopPollingByNetworkClientId` to `stopPollingByPollingToken` ([#1810](https://github.com/MetaMask/core/pull/1810))
@@ -235,7 +294,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
235
294
  - Fix support for NFT metadata stored outside IPFS ([#1772](https://github.com/MetaMask/core/pull/1772))
236
295
 
237
296
  ## [15.0.0]
297
+
238
298
  ### Changed
299
+
239
300
  - **BREAKING**: `NftController` now expects `getNetworkClientById` in constructor options ([#1698](https://github.com/MetaMask/core/pull/1698))
240
301
  - **BREAKING**: `NftController.addNft` function signature has changed ([#1698](https://github.com/MetaMask/core/pull/1698))
241
302
  - Previously
@@ -261,7 +322,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
261
322
  networkClientId?: NetworkClientId; // new
262
323
  },
263
324
  ```
264
- - `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))
325
+ - `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))
265
326
  - `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))
266
327
  - `NftController.addNft` will use the chainId value derived from `networkClientId` if provided ([#1698](https://github.com/MetaMask/core/pull/1698))
267
328
  - `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))
@@ -272,19 +333,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
272
333
  - Bump dependency and peer dependency on `@metamask/network-controller` to ^14.0.0
273
334
 
274
335
  ### Fixed
336
+
275
337
  - 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))
276
338
 
277
339
  ## [14.0.0]
340
+
278
341
  ### Changed
342
+
279
343
  - Update TypeScript to v4.8.x ([#1718](https://github.com/MetaMask/core/pull/1718))
280
344
  - Update `@metamask/rpc-errors` to `^6.0.0` ([#1690](https://github.com/MetaMask/core/pull/1690))
281
345
 
282
346
  ### Removed
347
+
283
348
  - **BREAKING:** Remove AbortController polyfill
284
349
  - This package now assumes that the AbortController global exists
285
350
 
286
351
  ## [13.0.0]
352
+
287
353
  ### Changed
354
+
288
355
  - **BREAKING**: `TokensController` now expects `getNetworkClientById` in constructor options ([#1676](https://github.com/MetaMask/core/pull/1676))
289
356
  - **BREAKING**: `TokensController.addToken` now accepts a single options object ([#1676](https://github.com/MetaMask/core/pull/1676))
290
357
  ```
@@ -298,7 +365,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
298
365
  networkClientId?: NetworkClientId;
299
366
  }
300
367
  ```
301
- - **BREAKING**: Bump peer dependency on `@metamask/network-controller` to ^13.0.0 ([#1633](https://github.com/MetaMask/core/pull/1633))
368
+ - **BREAKING:** Bump peer dependency on `@metamask/network-controller` to ^13.0.0 ([#1633](https://github.com/MetaMask/core/pull/1633))
302
369
  - **CHANGED**: `TokensController.addToken` will use the chain ID value derived from state for `networkClientId` if provided ([#1676](https://github.com/MetaMask/core/pull/1676))
303
370
  - **CHANGED**: `TokensController.addTokens` now accepts an optional `networkClientId` as the last parameter ([#1676](https://github.com/MetaMask/core/pull/1676))
304
371
  - **CHANGED**: `TokensController.addTokens` will use the chain ID value derived from state for `networkClientId` if provided ([#1676](https://github.com/MetaMask/core/pull/1676))
@@ -307,33 +374,39 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
307
374
  - Bump dependency on `@metamask/preferences-controller` to ^4.4.1 ([#1676](https://github.com/MetaMask/core/pull/1676))
308
375
 
309
376
  ## [12.0.0]
377
+
310
378
  ### Added
379
+
311
380
  - Add `AssetsContractController` methods `getProvider`, `getChainId`, `getERC721Standard`, and `getERC1155Standard` ([#1638](https://github.com/MetaMask/core/pull/1638))
312
381
 
313
382
  ### Changed
383
+
314
384
  - **BREAKING**: Add `getNetworkClientById` to `AssetsContractController` constructor options ([#1638](https://github.com/MetaMask/core/pull/1638))
315
- - Add optional `networkClientId` parameter to various `AssetContractController` methods ([#1638](https://github.com/MetaMask/core/pull/1638))
316
- - The affected methods are:
317
- - `getERC20BalanceOf`
318
- - `getERC20TokenDecimals`
319
- - `getERC20TokenName`
320
- - `getERC721NftTokenId`
321
- - `getTokenStandardAndDetails`
322
- - `getERC721TokenURI`
323
- - `getERC721AssetName`
324
- - `getERC721AssetSymbol`
325
- - `getERC721OwnerOf`
326
- - `getERC1155TokenURI`
327
- - `getERC1155BalanceOf`
328
- - `transferSingleERC1155`
329
- - `getBalancesInSingleCall`
385
+ - Add optional `networkClientId` parameter to various `AssetContractController` methods ([#1638](https://github.com/MetaMask/core/pull/1638))
386
+ - The affected methods are:
387
+ - `getERC20BalanceOf`
388
+ - `getERC20TokenDecimals`
389
+ - `getERC20TokenName`
390
+ - `getERC721NftTokenId`
391
+ - `getTokenStandardAndDetails`
392
+ - `getERC721TokenURI`
393
+ - `getERC721AssetName`
394
+ - `getERC721AssetSymbol`
395
+ - `getERC721OwnerOf`
396
+ - `getERC1155TokenURI`
397
+ - `getERC1155BalanceOf`
398
+ - `transferSingleERC1155`
399
+ - `getBalancesInSingleCall`
330
400
 
331
401
  ## [11.1.0]
402
+
332
403
  ### Added
404
+
333
405
  - Add `tokenURI` to `NftMetadata` type ([#1577](https://github.com/MetaMask/core/pull/1577))
334
406
  - Populate token URL for NFT metadata under `tokenURI` ([#1577](https://github.com/MetaMask/core/pull/1577))
335
407
 
336
408
  ### Changed
409
+
337
410
  - Bump dependency and peer dependency on `@metamask/approval-controller` to ^3.5.1
338
411
  - Bump dependency on `@metamask/base-controller` to ^3.2.1
339
412
  - Bump dependency on `@metamask/controller-utils` to ^4.3.2
@@ -342,38 +415,47 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
342
415
  - Update NftController to add fallback for when IPFS gateway is disabled ([#1577](https://github.com/MetaMask/core/pull/1577))
343
416
 
344
417
  ## [11.0.1]
418
+
345
419
  ### Changed
420
+
346
421
  - Replace `eth-query` ^2.1.2 with `@metamask/eth-query` ^3.0.1 ([#1546](https://github.com/MetaMask/core/pull/1546))
347
422
 
348
423
  ## [11.0.0]
424
+
349
425
  ### Added
426
+
350
427
  - Add a `stop` method to stop polling
351
428
 
352
429
  ### Changed
430
+
353
431
  - **BREAKING**: New required constructor parameters for the `TokenRatesController` ([#1497](https://github.com/MetaMask/core/pull/1497), [#1511](https://github.com/MetaMask/core/pull/1511))
354
432
  - The new required parameters are `ticker`, `onSelectedAddress`, and `onPreferencesStateChange`
355
- - **BREAKING**: Remove `onCurrencyRateStateChange` constructor parameter from `TokenRatesController` ([#1496](https://github.com/MetaMask/core/pull/1496))
356
- - **BREAKING**: Disable `TokenRatesController` automatic polling ([#1501](https://github.com/MetaMask/core/pull/1501))
433
+ - **BREAKING:** Remove `onCurrencyRateStateChange` constructor parameter from `TokenRatesController` ([#1496](https://github.com/MetaMask/core/pull/1496))
434
+ - **BREAKING:** Disable `TokenRatesController` automatic polling ([#1501](https://github.com/MetaMask/core/pull/1501))
357
435
  - Polling must be started explicitly by calling the `start` method
358
436
  - The token rates are not updated upon state changes when polling is disabled.
359
- - **BREAKING**: Replace the `poll` method with `start` ([#1501](https://github.com/MetaMask/core/pull/1501))
437
+ - **BREAKING:** Replace the `poll` method with `start` ([#1501](https://github.com/MetaMask/core/pull/1501))
360
438
  - The `start` method does not offer a way to change the interval. That must be done by calling `.configure` instead
361
- - **BREAKING**: Remove `TokenRatecontroller` setter for `chainId` and `tokens` properties ([#1505](https://github.com/MetaMask/core/pull/1505))
439
+ - **BREAKING:** Remove `TokenRatecontroller` setter for `chainId` and `tokens` properties ([#1505](https://github.com/MetaMask/core/pull/1505))
362
440
  - Bump @metamask/abi-utils from 1.2.0 to 2.0.1 ([#1525](https://github.com/MetaMask/core/pull/1525))
363
441
  - Update `@metamask/utils` to `^6.2.0` ([#1514](https://github.com/MetaMask/core/pull/1514))
364
442
  - Remove unnecessary `babel-runtime` dependency ([#1504](https://github.com/MetaMask/core/pull/1504))
365
443
 
366
444
  ### Fixed
445
+
367
446
  - 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))
368
447
  - 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))
369
448
  - Prevent redundant token rate updates ([#1512](https://github.com/MetaMask/core/pull/1512))
370
449
 
371
450
  ## [10.0.0]
451
+
372
452
  ### Added
453
+
373
454
  - The method `getERC20TokenName` has been added to `AssetsContractController` ([#1127](https://github.com/MetaMask/core/pull/1127))
374
455
  - This method gets the token name from the token contract
375
456
 
376
457
  ### Changed
458
+
377
459
  - **BREAKING:** The tokens controller now requires `onTokenListStateChange` and `getERC20TokenName` as constructor parameters ([#1127](https://github.com/MetaMask/core/pull/1127))
378
460
  - The `getERC20TokenName` method is used to get the token name for tokens added via `wallet_watchAsset`
379
461
  - 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.
@@ -384,19 +466,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
384
466
  - The `Token` type now includes an optional `name` field ([#1127](https://github.com/MetaMask/core/pull/1127))
385
467
 
386
468
  ## [9.2.0]
469
+
387
470
  ### Added
471
+
388
472
  - 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))
389
473
 
390
474
  ## [9.1.0]
475
+
391
476
  ### Added
477
+
392
478
  - Add a fifth argument, `source`, to NftController's `addNft` method ([#1417](https://github.com/MetaMask/core/pull/1417))
393
479
  - This argument can be used to specify whether the NFT was detected, added manually, or suggested by a dapp
394
480
 
395
481
  ### Fixed
482
+
396
483
  - 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))
397
484
 
398
485
  ## [9.0.0]
486
+
399
487
  ### Added
488
+
400
489
  - **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))
401
490
  - Previously, the controller would refresh all account balances, but these options can be used to only refresh the currently selected account
402
491
  - **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))
@@ -404,15 +493,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
404
493
  - 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`.
405
494
 
406
495
  ### Changed
496
+
407
497
  - Add dependency on `@ethersproject/address` ([#1173](https://github.com/MetaMask/core/pull/1173))
408
498
  - Replace `eth-rpc-errors` with `@metamask/rpc-errors` ([#1173](https://github.com/MetaMask/core/pull/1173))
409
499
 
410
500
  ## [8.0.0]
501
+
411
502
  ### Added
503
+
412
504
  - Support NFT detection on Ethereum Mainnet custom RPC endpoints ([#1360](https://github.com/MetaMask/core/pull/1360))
413
505
  - Enable token detection for the Aurora network ([#1327](https://github.com/MetaMask/core/pull/1327))
414
506
 
415
507
  ### Changed
508
+
416
509
  - **BREAKING:** Bump to Node 16 ([#1262](https://github.com/MetaMask/core/pull/1262))
417
510
  - **BREAKING:** Change format of chain ID in state to 0x-prefixed hex string ([#1367](https://github.com/MetaMask/core/pull/1367))
418
511
  - The functions `isTokenDetectionSupportedForNetwork` and `formatIconUrlWithProxy` now expect a chain ID as type `Hex` rather than as a decimal `string`
@@ -432,17 +525,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
432
525
  - The tokens controller `addDetectedTokens` method now accepts the `chainId` property of the `detectionDetails` parameter to be of type `Hex` rather than decimal `string`.
433
526
  - The tokens controller state properties `allTokens`, `allIgnoredTokens`, and `allDetectedTokens` are now keyed by chain ID in `Hex` format rather than decimal `string`.
434
527
  - This requires a state migration
435
- - **BREAKING**: Use approval controller for suggested assets ([#1261](https://github.com/MetaMask/core/pull/1261), [#1268](https://github.com/MetaMask/core/pull/1268))
528
+ - **BREAKING:** Use approval controller for suggested assets ([#1261](https://github.com/MetaMask/core/pull/1261), [#1268](https://github.com/MetaMask/core/pull/1268))
436
529
  - The actions `ApprovalController:acceptRequest` and `ApprovalController:rejectRequest` are no longer required by the token controller messenger.
437
530
  - The `suggestedAssets` state has been removed, which means that suggested assets are no longer persisted in state
438
531
  - The return type for `watchAsset` has changed. It now returns a Promise that settles after the request has been confirmed or rejected.
439
532
  - **BREAKING:** Initialize controllers with the current network ([#1361](https://github.com/MetaMask/core/pull/1361))
440
533
  - The following controllers now have a new `chainId` required constructor parameter:
441
- * `AssetsContractController`
442
- * `NftController`
443
- * `NftDetectionController`
444
- * `TokenRatesController`
445
- * `TokensController`
534
+ - `AssetsContractController`
535
+ - `NftController`
536
+ - `NftDetectionController`
537
+ - `TokenRatesController`
538
+ - `TokensController`
446
539
  - **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))
447
540
  - **BREAKING:** The token list controller `onNetworkStateChange` option now has a more restrictive type ([#1329](https://github.com/MetaMask/core/pull/1329))
448
541
  - The event handler parameter type has been changed from `NetworkState | ProviderConfig` to `NetworkState`
@@ -454,42 +547,58 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
454
547
  - Bump @metamask/utils from 5.0.1 to 5.0.2 ([#1271](https://github.com/MetaMask/core/pull/1271))
455
548
 
456
549
  ### Removed
550
+
457
551
  - **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))
458
552
  - **BREAKING:** Remove the `SuggestedAssetMeta` and `SuggestedAssetMetaBase` types from the token controller ([#1268](https://github.com/MetaMask/core/pull/1268))
459
553
  - **BREAKING:** Remove the `acceptWatchAsset` and `rejectWatchAsset` methods from the token controller ([#1268](https://github.com/MetaMask/core/pull/1268))
460
554
  - Suggested assets can be accepted or rejected using the approval controller instead
461
555
 
462
556
  ## [7.0.0]
557
+
463
558
  ### Changed
559
+
464
560
  - **BREAKING**: peerDeps: @metamask/network-controller@6.0.0->8.0.0 ([#1196](https://github.com/MetaMask/core/pull/1196))
465
561
 
466
562
  ## [6.0.0]
563
+
467
564
  ### Changed
565
+
468
566
  - **BREAKING:** Create approval requests using `@metamask/approval-controller` ([#1166](https://github.com/MetaMask/core/pull/1166))
469
567
 
470
568
  ## [5.1.0]
569
+
471
570
  ### Added
571
+
472
572
  - Support watching assets on a specific account ([#1124](https://github.com/MetaMask/core/pull/1124))
473
573
 
474
574
  ## [5.0.1]
575
+
475
576
  ### Changed
577
+
476
578
  - Update `@metamask/contract-metadata` from 2.1.0 to 2.3.1 ([#1141](https://github.com/MetaMask/core/pull/1141))
477
579
 
478
580
  ## [5.0.0]
581
+
479
582
  ### Removed
583
+
480
584
  - **BREAKING:** Remove `isomorphic-fetch` ([#1106](https://github.com/MetaMask/controllers/pull/1106))
481
585
  - Consumers must now import `isomorphic-fetch` or another polyfill themselves if they are running in an environment without `fetch`
482
586
 
483
587
  ## [4.0.1]
588
+
484
589
  ### Fixed
590
+
485
591
  - 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))
486
592
 
487
593
  ## [4.0.0]
594
+
488
595
  ### Added
596
+
489
597
  - Add Sepolia support to the currency rate controller ([#1041](https://github.com/MetaMask/controllers/pull/1041))
490
598
  - The currency rate controller will now treat Sepolia as a testnet, and return the Mainnet exchange rate when asked for the Sepolia exchange rate.
491
599
 
492
600
  ### Changed
601
+
493
602
  - **BREAKING:** Update `@metamask/network-controller` peer dependency to v3 ([#1041](https://github.com/MetaMask/controllers/pull/1041))
494
603
  - **BREAKING:** Migrate from `metaswap` to `metafi` subdomain for OpenSea proxy and token icons API ([#1060](https://github.com/MetaMask/core/pull/1060))
495
604
  - Rename this repository to `core` ([#1031](https://github.com/MetaMask/controllers/pull/1031))
@@ -497,29 +606,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
497
606
  - Update `@metamask/controller-utils` package ([#1041](https://github.com/MetaMask/controllers/pull/1041))
498
607
 
499
608
  ## Removed
609
+
500
610
  - **BREAKING**: Drop support for Ropsten, Rinkeby, and Kovan ([#1041](https://github.com/MetaMask/controllers/pull/1041))
501
611
  - 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.
502
612
  - The NFT controller no longer supports the Rinkeby OpenSea test API.
503
613
 
504
614
  ## [3.0.1]
615
+
505
616
  ### Changed
617
+
506
618
  - Export `isTokenDetectionSupportedForNetwork` function ([#1034](https://github.com/MetaMask/controllers/pull/1034))
507
619
  - Update `@metamask/contract-metadata` from 1.35.0 to 2.1.0 ([#1013](https://github.com/MetaMask/controllers/pull/1013))
508
620
 
509
621
  ### Fixed
622
+
510
623
  - Fix token controller state updates ([#1015](https://github.com/MetaMask/controllers/pull/1015))
511
624
  - 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.
512
625
 
513
626
  ## [3.0.0]
627
+
514
628
  ### Changed
629
+
515
630
  - **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))
516
631
 
517
632
  ### Fixed
633
+
518
634
  - 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))
519
635
  - This package will now warn if a required package is not present ([#1003](https://github.com/MetaMask/core/pull/1003))
520
636
 
521
637
  ## [2.0.0]
638
+
522
639
  ### Changed
640
+
523
641
  - **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))
524
642
  - This affects:
525
643
  - AssetsContractController
@@ -533,19 +651,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
533
651
  - 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))
534
652
 
535
653
  ## [1.0.1]
654
+
536
655
  ### Fixed
656
+
537
657
  - Fix race condition where some token detections can get mistakenly added to the wrong account ([#956](https://github.com/MetaMask/core/pull/956))
538
658
 
539
659
  ## [1.0.0]
660
+
540
661
  ### Added
662
+
541
663
  - Initial release
664
+
542
665
  - 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:
666
+
543
667
  - Everything in `src/assets`
544
668
  - Asset-related functions from `src/util.ts` and accompanying tests
545
669
 
546
670
  All changes listed after this point were applied to this package following the monorepo conversion.
547
671
 
548
672
  ### Changed
673
+
549
674
  - Use Ethers for AssetsContractController ([#845](https://github.com/MetaMask/core/pull/845))
550
675
 
551
676
  [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@25.0.0...HEAD
@@ -2,7 +2,7 @@
2
2
  import { Web3Provider } from '@ethersproject/providers';
3
3
  import type { BaseConfig, BaseState } from '@metamask/base-controller';
4
4
  import { BaseControllerV1 } from '@metamask/base-controller';
5
- import type { NetworkClientId, NetworkState, NetworkController } from '@metamask/network-controller';
5
+ import type { NetworkClientId, NetworkState, NetworkController, Provider } from '@metamask/network-controller';
6
6
  import type { PreferencesState } from '@metamask/preferences-controller';
7
7
  import type { Hex } from '@metamask/utils';
8
8
  import type { BN } from 'ethereumjs-util';
@@ -24,7 +24,7 @@ export declare const MISSING_PROVIDER_ERROR = "AssetsContractController failed t
24
24
  * @property provider - Provider used to create a new web3 instance
25
25
  */
26
26
  export interface AssetsContractConfig extends BaseConfig {
27
- provider: any;
27
+ provider: Provider | undefined;
28
28
  ipfsGateway: string;
29
29
  chainId: Hex;
30
30
  }
@@ -71,8 +71,8 @@ export declare class AssetsContractController extends BaseControllerV1<AssetsCon
71
71
  *
72
72
  * @property provider - Provider used to create a new underlying Web3 instance
73
73
  */
74
- set provider(provider: any);
75
- get provider(): any;
74
+ set provider(provider: Provider);
75
+ get provider(): Provider;
76
76
  /**
77
77
  * Get the relevant provider instance.
78
78
  *