From e81c3937a1bab2c48c2e87ab18e3114c4444d32d Mon Sep 17 00:00:00 2001
From: Michele Esposito <34438276+mikesposito@users.noreply.github.com>
Date: Tue, 12 May 2026 16:19:33 +0200
Subject: [PATCH 1/3] Release 978.0.0 (#8774)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
## Explanation
Releasing new `network-controller` major version and `controller-utils`
minor version, along with all their peers
## References
## Checklist
- [ ] I've updated the test suite for new or updated code as appropriate
- [ ] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [ ] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/processes/updating-changelogs.md)
- [ ] I've introduced [breaking
changes](https://github.com/MetaMask/core/tree/main/docs/processes/breaking-changes.md)
in this PR and have prepared draft pull requests for clients and
consumer packages to resolve them
---
> [!NOTE]
> **Medium Risk**
> Mostly version and dependency bumps across the monorepo, but it pulls
in `@metamask/network-controller@32.0.0` (breaking default-network set
changes) which can affect consumers’ network availability and
initialization assumptions.
>
> **Overview**
> Updates the monorepo release to `978.0.0` and publishes new package
versions across many workspaces.
>
> Propagates dependency bumps for the
`@metamask/network-controller@32.0.0` major and
`@metamask/controller-utils@12.1.0` minor (plus related peer bumps like
`@metamask/accounts-controller@38.1.1`,
`@metamask/assets-controllers@108.0.0`, and
`@metamask/signature-controller@39.2.2`), with corresponding
`package.json` and `CHANGELOG.md` updates throughout.
>
> Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
7ef6440cbe2dae5cdc7854c500ef2d7577ff7b6c. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).
---
package.json | 4 +-
packages/account-tree-controller/CHANGELOG.md | 2 +-
packages/account-tree-controller/package.json | 2 +-
packages/accounts-controller/CHANGELOG.md | 39 ++--
packages/accounts-controller/package.json | 6 +-
packages/address-book-controller/CHANGELOG.md | 4 +
packages/address-book-controller/package.json | 2 +-
.../CHANGELOG.md | 2 +-
.../package.json | 2 +-
packages/assets-controller/CHANGELOG.md | 12 +-
packages/assets-controller/package.json | 10 +-
packages/assets-controllers/CHANGELOG.md | 11 +-
packages/assets-controllers/package.json | 8 +-
.../authenticated-user-storage/CHANGELOG.md | 4 +
.../authenticated-user-storage/package.json | 2 +-
packages/base-data-service/CHANGELOG.md | 4 +
packages/base-data-service/package.json | 2 +-
packages/bridge-controller/CHANGELOG.md | 13 +-
packages/bridge-controller/package.json | 12 +-
.../bridge-status-controller/CHANGELOG.md | 12 +-
.../bridge-status-controller/package.json | 10 +-
.../chain-agnostic-permission/CHANGELOG.md | 4 +
.../chain-agnostic-permission/package.json | 2 +-
packages/chomp-api-service/CHANGELOG.md | 4 +
packages/chomp-api-service/package.json | 2 +-
packages/claims-controller/CHANGELOG.md | 4 +
packages/claims-controller/package.json | 2 +-
packages/compliance-controller/CHANGELOG.md | 4 +
packages/compliance-controller/package.json | 2 +-
.../config-registry-controller/CHANGELOG.md | 4 +
.../config-registry-controller/package.json | 2 +-
packages/controller-utils/CHANGELOG.md | 5 +-
packages/controller-utils/package.json | 2 +-
packages/core-backend/CHANGELOG.md | 5 +
packages/core-backend/package.json | 4 +-
packages/earn-controller/CHANGELOG.md | 10 +-
packages/earn-controller/package.json | 6 +-
.../CHANGELOG.md | 4 +
.../package.json | 2 +-
.../CHANGELOG.md | 4 +
.../package.json | 2 +-
packages/ens-controller/CHANGELOG.md | 16 +-
packages/ens-controller/package.json | 6 +-
packages/eth-json-rpc-middleware/package.json | 2 +-
packages/gas-fee-controller/CHANGELOG.md | 3 +-
packages/gas-fee-controller/package.json | 4 +-
.../gator-permissions-controller/CHANGELOG.md | 7 +-
.../gator-permissions-controller/package.json | 4 +-
packages/geolocation-controller/CHANGELOG.md | 4 +
packages/geolocation-controller/package.json | 2 +-
packages/logging-controller/CHANGELOG.md | 4 +
packages/logging-controller/package.json | 2 +-
packages/message-manager/CHANGELOG.md | 4 +
packages/message-manager/package.json | 2 +-
.../CHANGELOG.md | 8 +-
.../package.json | 6 +-
.../money-account-controller/CHANGELOG.md | 2 +-
.../money-account-controller/package.json | 2 +-
.../CHANGELOG.md | 9 +-
.../package.json | 4 +-
.../multichain-account-service/CHANGELOG.md | 2 +-
.../multichain-account-service/package.json | 4 +-
.../multichain-api-middleware/CHANGELOG.md | 9 +-
.../multichain-api-middleware/package.json | 8 +-
.../CHANGELOG.md | 4 +-
.../package.json | 6 +-
.../CHANGELOG.md | 2 +-
.../package.json | 2 +-
packages/name-controller/CHANGELOG.md | 4 +
packages/name-controller/package.json | 2 +-
packages/network-controller/CHANGELOG.md | 6 +-
packages/network-controller/package.json | 4 +-
.../CHANGELOG.md | 3 +-
.../package.json | 4 +-
.../CHANGELOG.md | 4 +
.../package.json | 2 +-
packages/permission-controller/CHANGELOG.md | 4 +
packages/permission-controller/package.json | 2 +-
packages/perps-controller/CHANGELOG.md | 4 +
packages/perps-controller/package.json | 4 +-
packages/phishing-controller/CHANGELOG.md | 4 +
packages/phishing-controller/package.json | 2 +-
packages/polling-controller/CHANGELOG.md | 3 +-
packages/polling-controller/package.json | 4 +-
.../profile-metrics-controller/CHANGELOG.md | 5 +
.../profile-metrics-controller/package.json | 4 +-
packages/ramps-controller/CHANGELOG.md | 4 +
packages/ramps-controller/package.json | 2 +-
.../CHANGELOG.md | 4 +
.../package.json | 2 +-
packages/sample-controllers/CHANGELOG.md | 7 +-
packages/sample-controllers/package.json | 6 +-
.../selected-network-controller/CHANGELOG.md | 7 +-
.../selected-network-controller/package.json | 4 +-
packages/shield-controller/CHANGELOG.md | 5 +
packages/shield-controller/package.json | 4 +-
packages/signature-controller/CHANGELOG.md | 10 +-
packages/signature-controller/package.json | 10 +-
packages/social-controllers/CHANGELOG.md | 4 +
packages/social-controllers/package.json | 2 +-
packages/subscription-controller/CHANGELOG.md | 4 +
packages/subscription-controller/package.json | 2 +-
packages/transaction-controller/CHANGELOG.md | 4 +-
packages/transaction-controller/package.json | 6 +-
.../transaction-pay-controller/CHANGELOG.md | 14 +-
.../transaction-pay-controller/package.json | 14 +-
.../user-operation-controller/CHANGELOG.md | 22 +-
.../user-operation-controller/package.json | 6 +-
yarn.lock | 206 +++++++++---------
109 files changed, 497 insertions(+), 282 deletions(-)
diff --git a/package.json b/package.json
index feb9d66fd0..5d0f731505 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@metamask/core-monorepo",
- "version": "977.0.0",
+ "version": "978.0.0",
"private": true,
"description": "Monorepo for packages shared between MetaMask clients",
"repository": {
@@ -55,7 +55,7 @@
"@metamask/eth-block-tracker": "^15.0.1",
"@metamask/eth-json-rpc-provider": "^6.0.1",
"@metamask/json-rpc-engine": "^10.5.0",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@metamask/utils": "^11.9.0",
"@ts-bridge/cli": "^0.6.4",
"@types/jest": "^29.5.14",
diff --git a/packages/account-tree-controller/CHANGELOG.md b/packages/account-tree-controller/CHANGELOG.md
index 8eef03ff2d..7144f0a421 100644
--- a/packages/account-tree-controller/CHANGELOG.md
+++ b/packages/account-tree-controller/CHANGELOG.md
@@ -14,7 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
-- Bump `@metamask/accounts-controller` from `^38.0.0` to `^38.1.0` ([#8755](https://github.com/MetaMask/core/pull/8755))
+- Bump `@metamask/accounts-controller` from `^38.0.0` to `^38.1.1` ([#8755](https://github.com/MetaMask/core/pull/8755), [#8774](https://github.com/MetaMask/core/pull/8774))
## [7.3.0]
diff --git a/packages/account-tree-controller/package.json b/packages/account-tree-controller/package.json
index 5c446de004..c27f2bd60b 100644
--- a/packages/account-tree-controller/package.json
+++ b/packages/account-tree-controller/package.json
@@ -53,7 +53,7 @@
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
},
"dependencies": {
- "@metamask/accounts-controller": "^38.1.0",
+ "@metamask/accounts-controller": "^38.1.1",
"@metamask/base-controller": "^9.1.0",
"@metamask/keyring-api": "^23.1.0",
"@metamask/keyring-controller": "^25.5.0",
diff --git a/packages/accounts-controller/CHANGELOG.md b/packages/accounts-controller/CHANGELOG.md
index 014a12d630..eb53fa85f3 100644
--- a/packages/accounts-controller/CHANGELOG.md
+++ b/packages/accounts-controller/CHANGELOG.md
@@ -7,9 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [38.1.1]
+
### Changed
-- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765))
+- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774))
## [38.1.0]
@@ -90,8 +92,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Add `accountIdByAddress` mapping to state ([#7893](https://github.com/MetaMask/core/pull/7893))
- This state was added to improve lookup times for an account by address from O(n) to O(1).
- `getAccountByAddress` also leverages this new map, thus, should be slightly faster too.
-- Add logging capabilities ([#8118](https://github.com/MetaMask/core/pull/8118/))
-- Expose missing public `AccountsController` methods through its messenger ([#7976](https://github.com/MetaMask/core/pull/7976/))
+- Add logging capabilities ([#8118](https://github.com/MetaMask/core/pull/8118))
+- Expose missing public `AccountsController` methods through its messenger ([#7976](https://github.com/MetaMask/core/pull/7976))
- The following actions are now available:
- `AccountController:loadBackupAction`
- Corresponding action types (e.g. `AccountControllerLoadBackupAction`) are available as well.
@@ -236,7 +238,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
-- Use new typed `KeyringAccount.options` for BIP-44 compatible accounts ([#6122](https://github.com/MetaMask/core/pull/6122)), ([#6147](https://github.com/MetaMask/core/pull/6147))
+- Use new typed `KeyringAccount.options` for BIP-44 compatible accounts, ([#6122](https://github.com/MetaMask/core/pull/6122), [#6147](https://github.com/MetaMask/core/pull/6147))
### Changed
@@ -307,7 +309,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
-- `@metamask/network-controller` peer dependency is no longer also a direct dependency ([#5464](https://github.com/MetaMask/core/pull/5464)))
+- `@metamask/network-controller` peer dependency is no longer also a direct dependency) ([#5464](https://github.com/MetaMask/core/pull/5464))
## [26.1.0]
@@ -345,7 +347,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Bump `@metamask/keyring-controller"` from `^19.1.0` to `^19.2.0` ([#5357](https://github.com/MetaMask/core/pull/5357))
- Bump `@metamask/keyring-api"` from `^17.0.0` to `^17.2.0` ([#5366](https://github.com/MetaMask/core/pull/5366))
-- Bump `@metamask/keyring-internal-api` from `^4.0.1` to `^4.0.3` ([#5356](https://github.com/MetaMask/core/pull/5356)), ([#5366](https://github.com/MetaMask/core/pull/5366))
+- Bump `@metamask/keyring-internal-api` from `^4.0.1` to `^4.0.3`, ([#5356](https://github.com/MetaMask/core/pull/5356), [#5366](https://github.com/MetaMask/core/pull/5366))
- Bump `@metamask/eth-snap-keyring` from `^10.0.0` to `^11.1.0` ([#5366](https://github.com/MetaMask/core/pull/5366))
- Bump `@metamask/utils` from `^11.1.0` to `^11.2.0` ([#5301](https://github.com/MetaMask/core/pull/5301))
@@ -358,7 +360,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
-- **BREAKING:** Add `@metamask/network-controller@^22.0.0` peer dependency ([#5215](https://github.com/MetaMask/core/pull/5215)), ([#5327](https://github.com/MetaMask/core/pull/5327))
+- **BREAKING:** Add `@metamask/network-controller@^22.0.0` peer dependency, ([#5215](https://github.com/MetaMask/core/pull/5215), [#5327](https://github.com/MetaMask/core/pull/5327))
## [23.1.0]
@@ -379,7 +381,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- **BREAKING:** Bump `@metamask/snaps-controllers` peer dependency from `^9.7.0` to `^9.19.0` ([#5265](https://github.com/MetaMask/core/pull/5265))
- Bump `@metamask/keyring-api"` from `^16.1.0` to `^17.0.0` ([#5280](https://github.com/MetaMask/core/pull/5280))
- Bump `@metamask/eth-snap-keyring` from `^9.1.1` to `^10.0.0` ([#5280](https://github.com/MetaMask/core/pull/5280))
-- Bump `@metamask/snaps-sdk` from `^6.7.0` to `^6.17.1` ([#5220](https://github.com/MetaMask/core/pull/5220)), ([#5265](https://github.com/MetaMask/core/pull/5265))
+- Bump `@metamask/snaps-sdk` from `^6.7.0` to `^6.17.1`, ([#5220](https://github.com/MetaMask/core/pull/5220), [#5265](https://github.com/MetaMask/core/pull/5265))
- Bump `@metamask/snaps-utils` from `^8.9.0` to `^8.10.0` ([#5265](https://github.com/MetaMask/core/pull/5265))
- Bump `@metamask/utils` from `^11.0.1` to `^11.1.0` ([#5223](https://github.com/MetaMask/core/pull/5223))
@@ -398,9 +400,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- **BREAKING:** Now requires `SnapKeyring:account{AssetList,Balances,Transactions}Updated` events to be registered on the messenger ([#5190](https://github.com/MetaMask/core/pull/5190))
-- Bump `@metamask/keyring-api` from `^14.0.0` to `^16.1.0` ([#5190](https://github.com/MetaMask/core/pull/5190)), ([#5208](https://github.com/MetaMask/core/pull/5208))
-- Bump `@metamask/keyring-internal-api` from `^2.0.1` to `^4.0.1` ([#5190](https://github.com/MetaMask/core/pull/5190)), ([#5208](https://github.com/MetaMask/core/pull/5208))
-- Bump `@metamask/eth-snap-keyring` from `^8.1.1` to `^9.1.1` ([#5190](https://github.com/MetaMask/core/pull/5190)), ([#5208](https://github.com/MetaMask/core/pull/5208))
+- Bump `@metamask/keyring-api` from `^14.0.0` to `^16.1.0`, ([#5190](https://github.com/MetaMask/core/pull/5190), [#5208](https://github.com/MetaMask/core/pull/5208))
+- Bump `@metamask/keyring-internal-api` from `^2.0.1` to `^4.0.1`, ([#5190](https://github.com/MetaMask/core/pull/5190), [#5208](https://github.com/MetaMask/core/pull/5208))
+- Bump `@metamask/eth-snap-keyring` from `^8.1.1` to `^9.1.1`, ([#5190](https://github.com/MetaMask/core/pull/5190), [#5208](https://github.com/MetaMask/core/pull/5208))
## [21.0.2]
@@ -420,9 +422,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
-- **BREAKING:** Add `scopes` field to `KeyringAccount` ([#5066](https://github.com/MetaMask/core/pull/5066)), ([#5136](https://github.com/MetaMask/core/pull/5136))
+- **BREAKING:** Add `scopes` field to `KeyringAccount`, ([#5066](https://github.com/MetaMask/core/pull/5066), [#5136](https://github.com/MetaMask/core/pull/5136))
- This field is now required and will be used to identify the supported chains (using CAIP-2 chain IDs) for every accounts.
-- Bump `@metamask/base-controller` from `^7.0.0` to `^7.1.1` ([#5079](https://github.com/MetaMask/core/pull/5079)), ([#5135](https://github.com/MetaMask/core/pull/5135))
+- Bump `@metamask/base-controller` from `^7.0.0` to `^7.1.1`, ([#5079](https://github.com/MetaMask/core/pull/5079), [#5135](https://github.com/MetaMask/core/pull/5135))
- Bump `@metamask/utils` to `^11.0.1` ([#5080](https://github.com/MetaMask/core/pull/5080))
- Bump `@metamask/rpc-errors` to `^7.0.2` ([#5080](https://github.com/MetaMask/core/pull/5080))
@@ -454,7 +456,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
-- **BREAKING:** Bump peer dependency `@metamask/keyring-controller` from `^18.0.0` to `^19.0.0` ([#4915](https://github.com/MetaMask/core/pull/4956))
+- **BREAKING:** Bump peer dependency `@metamask/keyring-controller` from `^18.0.0` to `^19.0.0` ([#4915](https://github.com/MetaMask/core/pull/4915))
- **BREAKING:** Bump `@metamask/keyring-api` from `^8.1.3` to `^10.1.0` ([#4948](https://github.com/MetaMask/core/pull/4948))
- If you are depending on `@metamask/providers` directly, you will need to upgrade to `18.1.0`.
- Bump `@metamask/eth-snap-keyring` from `^4.3.6` to `^5.0.1` ([#4948](https://github.com/MetaMask/core/pull/4948))
@@ -479,7 +481,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
-- Bump accounts related packages ([#4713](https://github.com/MetaMask/core/pull/4713)), ([#4728](https://github.com/MetaMask/core/pull/4728))
+- Bump accounts related packages, ([#4713](https://github.com/MetaMask/core/pull/4713), [#4728](https://github.com/MetaMask/core/pull/4728))
- Those packages are now built slightly differently and are part of the [accounts monorepo](https://github.com/MetaMask/accounts).
- Bump `@metamask/keyring-api` from `^8.1.0` to `^8.1.4`
- Bump `@metamask/eth-snap-keyring` from `^4.3.3` to `^4.3.6`
@@ -503,7 +505,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
["Are the Types Wrong?"](https://arethetypeswrong.github.io/) tool as
["masquerading as CJS"](https://github.com/arethetypeswrong/arethetypeswrong.github.io/blob/main/docs/problems/FalseCJS.md).
All of the ATTW checks now pass.
-- Remove chunk files ([#4648](https://github.com/MetaMask/core/pull/4648)).
+- Remove chunk files. ([#4648](https://github.com/MetaMask/core/pull/4648))
- Previously, the build tool we used to generate JavaScript files extracted
common code to "chunk" files. While this was intended to make this package
more tree-shakeable, it also made debugging more difficult for our
@@ -513,7 +515,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
-- Add event `AccountsController:accountRenamed` and export corresponding event type `AccountsControllerAccountRenamedEvent` ([#4664](https://github.com/MetaMask/core/pull/4664)), ([#4660](https://github.com/MetaMask/core/pull/4660))
+- Add event `AccountsController:accountRenamed` and export corresponding event type `AccountsControllerAccountRenamedEvent`, ([#4664](https://github.com/MetaMask/core/pull/4664), [#4660](https://github.com/MetaMask/core/pull/4660))
- Add new `nameLastUpdatedAt` timestamp to account's metadata ([#4589](https://github.com/MetaMask/core/pull/4589))
### Changed
@@ -797,7 +799,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Initial release ([#1637](https://github.com/MetaMask/core/pull/1637))
-[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/accounts-controller@38.1.0...HEAD
+[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/accounts-controller@38.1.1...HEAD
+[38.1.1]: https://github.com/MetaMask/core/compare/@metamask/accounts-controller@38.1.0...@metamask/accounts-controller@38.1.1
[38.1.0]: https://github.com/MetaMask/core/compare/@metamask/accounts-controller@38.0.0...@metamask/accounts-controller@38.1.0
[38.0.0]: https://github.com/MetaMask/core/compare/@metamask/accounts-controller@37.2.0...@metamask/accounts-controller@38.0.0
[37.2.0]: https://github.com/MetaMask/core/compare/@metamask/accounts-controller@37.1.1...@metamask/accounts-controller@37.2.0
diff --git a/packages/accounts-controller/package.json b/packages/accounts-controller/package.json
index 1ce5482461..5d59260faa 100644
--- a/packages/accounts-controller/package.json
+++ b/packages/accounts-controller/package.json
@@ -1,6 +1,6 @@
{
"name": "@metamask/accounts-controller",
- "version": "38.1.0",
+ "version": "38.1.1",
"description": "Manages internal accounts",
"keywords": [
"Ethereum",
@@ -62,7 +62,7 @@
"@metamask/keyring-sdk": "^2.1.1",
"@metamask/keyring-utils": "^3.2.1",
"@metamask/messenger": "^1.2.0",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@metamask/superstruct": "^3.1.0",
"@metamask/utils": "^11.9.0",
"deepmerge": "^4.2.2",
@@ -73,7 +73,7 @@
},
"devDependencies": {
"@metamask/auto-changelog": "^6.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/providers": "^22.1.0",
"@ts-bridge/cli": "^0.6.4",
"@types/jest": "^29.5.14",
diff --git a/packages/address-book-controller/CHANGELOG.md b/packages/address-book-controller/CHANGELOG.md
index 2c4eb095ee..b88fb656a5 100644
--- a/packages/address-book-controller/CHANGELOG.md
+++ b/packages/address-book-controller/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [7.1.2]
### Changed
diff --git a/packages/address-book-controller/package.json b/packages/address-book-controller/package.json
index 022ab26e5e..008645625a 100644
--- a/packages/address-book-controller/package.json
+++ b/packages/address-book-controller/package.json
@@ -54,7 +54,7 @@
},
"dependencies": {
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/messenger": "^1.2.0",
"@metamask/utils": "^11.9.0"
},
diff --git a/packages/analytics-data-regulation-controller/CHANGELOG.md b/packages/analytics-data-regulation-controller/CHANGELOG.md
index b1e7e4fad2..1737e557f9 100644
--- a/packages/analytics-data-regulation-controller/CHANGELOG.md
+++ b/packages/analytics-data-regulation-controller/CHANGELOG.md
@@ -10,7 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- Bump `@metamask/messenger` from `^1.1.0` to `^1.2.0` ([#8373](https://github.com/MetaMask/core/pull/8373), [#8632](https://github.com/MetaMask/core/pull/8632))
-- Bump `@metamask/controller-utils` from `^11.19.0` to `^12.0.0` ([#8344](https://github.com/MetaMask/core/pull/8344), [#8755](https://github.com/MetaMask/core/pull/8755))
+- Bump `@metamask/controller-utils` from `^11.19.0` to `^12.1.0` ([#8344](https://github.com/MetaMask/core/pull/8344), [#8755](https://github.com/MetaMask/core/pull/8755), [#8774](https://github.com/MetaMask/core/pull/8774))
- Bump `@metamask/base-controller` from `^9.0.1` to `^9.1.0` ([#8457](https://github.com/MetaMask/core/pull/8457))
[Unreleased]: https://github.com/MetaMask/core/
diff --git a/packages/analytics-data-regulation-controller/package.json b/packages/analytics-data-regulation-controller/package.json
index 57ffab073e..175818a43e 100644
--- a/packages/analytics-data-regulation-controller/package.json
+++ b/packages/analytics-data-regulation-controller/package.json
@@ -54,7 +54,7 @@
},
"dependencies": {
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/messenger": "^1.2.0",
"@metamask/utils": "^11.9.0"
},
diff --git a/packages/assets-controller/CHANGELOG.md b/packages/assets-controller/CHANGELOG.md
index 66e3eac048..737848319c 100644
--- a/packages/assets-controller/CHANGELOG.md
+++ b/packages/assets-controller/CHANGELOG.md
@@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [7.1.1]
+
+### Changed
+
+- Bump `@metamask/accounts-controller` from `^38.1.0` to `^38.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/assets-controllers` from `^107.0.0` to `^108.0.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/network-controller` from `^31.1.0` to `^32.0.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [7.1.0]
### Changed
@@ -471,7 +480,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Refactor `RpcDataSource` to delegate polling to `BalanceFetcher` and `TokenDetector` services ([#7709](https://github.com/MetaMask/core/pull/7709))
- Refactor `BalanceFetcher` and `TokenDetector` to extend `StaticIntervalPollingControllerOnly` for independent polling management ([#7709](https://github.com/MetaMask/core/pull/7709))
-[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@7.1.0...HEAD
+[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@7.1.1...HEAD
+[7.1.1]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@7.1.0...@metamask/assets-controller@7.1.1
[7.1.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@7.0.1...@metamask/assets-controller@7.1.0
[7.0.1]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@7.0.0...@metamask/assets-controller@7.0.1
[7.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@6.4.0...@metamask/assets-controller@7.0.0
diff --git a/packages/assets-controller/package.json b/packages/assets-controller/package.json
index ab2bcf2731..db0da5e20a 100644
--- a/packages/assets-controller/package.json
+++ b/packages/assets-controller/package.json
@@ -1,6 +1,6 @@
{
"name": "@metamask/assets-controller",
- "version": "7.1.0",
+ "version": "7.1.1",
"description": "Tracks assets balances/prices and handles token detection across all digital assets",
"keywords": [
"Ethereum",
@@ -57,18 +57,18 @@
"@ethersproject/abi": "^5.7.0",
"@ethersproject/providers": "^5.7.0",
"@metamask/account-tree-controller": "^7.3.0",
- "@metamask/accounts-controller": "^38.1.0",
- "@metamask/assets-controllers": "^107.0.0",
+ "@metamask/accounts-controller": "^38.1.1",
+ "@metamask/assets-controllers": "^108.0.0",
"@metamask/base-controller": "^9.1.0",
"@metamask/client-controller": "^1.0.1",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/core-backend": "^6.2.2",
"@metamask/keyring-api": "^23.1.0",
"@metamask/keyring-controller": "^25.5.0",
"@metamask/keyring-internal-api": "^11.0.1",
"@metamask/keyring-snap-client": "^9.0.2",
"@metamask/messenger": "^1.2.0",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@metamask/network-enablement-controller": "^5.1.1",
"@metamask/permission-controller": "^13.1.1",
"@metamask/phishing-controller": "^17.1.2",
diff --git a/packages/assets-controllers/CHANGELOG.md b/packages/assets-controllers/CHANGELOG.md
index e06912fa6b..dd00e1d802 100644
--- a/packages/assets-controllers/CHANGELOG.md
+++ b/packages/assets-controllers/CHANGELOG.md
@@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [108.0.0]
+
+### Changed
+
+- Bump `@metamask/accounts-controller` from `^38.1.0` to `^38.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/network-controller` from `^31.1.0` to `^32.0.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [107.0.0]
### Added
@@ -3073,7 +3081,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Use Ethers for AssetsContractController ([#845](https://github.com/MetaMask/core/pull/845))
-[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@107.0.0...HEAD
+[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@108.0.0...HEAD
+[108.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@107.0.0...@metamask/assets-controllers@108.0.0
[107.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@106.0.1...@metamask/assets-controllers@107.0.0
[106.0.1]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@106.0.0...@metamask/assets-controllers@106.0.1
[106.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@105.1.0...@metamask/assets-controllers@106.0.0
diff --git a/packages/assets-controllers/package.json b/packages/assets-controllers/package.json
index 4f99321565..01180e3487 100644
--- a/packages/assets-controllers/package.json
+++ b/packages/assets-controllers/package.json
@@ -1,6 +1,6 @@
{
"name": "@metamask/assets-controllers",
- "version": "107.0.0",
+ "version": "108.0.0",
"description": "Controllers which manage interactions involving ERC-20, ERC-721, and ERC-1155 tokens (including NFTs)",
"keywords": [
"Ethereum",
@@ -61,11 +61,11 @@
"@ethersproject/providers": "^5.7.0",
"@metamask/abi-utils": "^2.0.3",
"@metamask/account-tree-controller": "^7.3.0",
- "@metamask/accounts-controller": "^38.1.0",
+ "@metamask/accounts-controller": "^38.1.1",
"@metamask/approval-controller": "^9.0.1",
"@metamask/base-controller": "^9.1.0",
"@metamask/contract-metadata": "^2.4.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/core-backend": "^6.2.2",
"@metamask/eth-query": "^4.0.0",
"@metamask/keyring-api": "^23.1.0",
@@ -73,7 +73,7 @@
"@metamask/messenger": "^1.2.0",
"@metamask/metamask-eth-abis": "^3.1.1",
"@metamask/multichain-account-service": "^9.0.0",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@metamask/network-enablement-controller": "^5.1.1",
"@metamask/permission-controller": "^13.1.1",
"@metamask/phishing-controller": "^17.1.2",
diff --git a/packages/authenticated-user-storage/CHANGELOG.md b/packages/authenticated-user-storage/CHANGELOG.md
index 1b10b5b916..c32b3fca7b 100644
--- a/packages/authenticated-user-storage/CHANGELOG.md
+++ b/packages/authenticated-user-storage/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [1.0.1]
### Changed
diff --git a/packages/authenticated-user-storage/package.json b/packages/authenticated-user-storage/package.json
index 9051dc5fb0..78374b1484 100644
--- a/packages/authenticated-user-storage/package.json
+++ b/packages/authenticated-user-storage/package.json
@@ -54,7 +54,7 @@
},
"dependencies": {
"@metamask/base-data-service": "^0.1.2",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/messenger": "^1.2.0",
"@metamask/superstruct": "^3.1.0",
"@metamask/utils": "^11.9.0"
diff --git a/packages/base-data-service/CHANGELOG.md b/packages/base-data-service/CHANGELOG.md
index 50e0426b5a..ff06bb7e9a 100644
--- a/packages/base-data-service/CHANGELOG.md
+++ b/packages/base-data-service/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [0.1.2]
### Changed
diff --git a/packages/base-data-service/package.json b/packages/base-data-service/package.json
index 7a5f629354..98d22500a5 100644
--- a/packages/base-data-service/package.json
+++ b/packages/base-data-service/package.json
@@ -54,7 +54,7 @@
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
},
"dependencies": {
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/messenger": "^1.2.0",
"@metamask/utils": "^11.9.0",
"@tanstack/query-core": "^4.43.0",
diff --git a/packages/bridge-controller/CHANGELOG.md b/packages/bridge-controller/CHANGELOG.md
index 5ab089cb42..72306fa915 100644
--- a/packages/bridge-controller/CHANGELOG.md
+++ b/packages/bridge-controller/CHANGELOG.md
@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [72.0.4]
+
+### Changed
+
+- Bump `@metamask/accounts-controller` from `^38.1.0` to `^38.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/assets-controller` from `^7.1.0` to `^7.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/assets-controllers` from `^107.0.0` to `^108.0.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/network-controller` from `^31.1.0` to `^32.0.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [72.0.3]
### Changed
@@ -1462,7 +1472,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Initial release ([#5317](https://github.com/MetaMask/core/pull/5317))
-[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/bridge-controller@72.0.3...HEAD
+[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/bridge-controller@72.0.4...HEAD
+[72.0.4]: https://github.com/MetaMask/core/compare/@metamask/bridge-controller@72.0.3...@metamask/bridge-controller@72.0.4
[72.0.3]: https://github.com/MetaMask/core/compare/@metamask/bridge-controller@72.0.2...@metamask/bridge-controller@72.0.3
[72.0.2]: https://github.com/MetaMask/core/compare/@metamask/bridge-controller@72.0.1...@metamask/bridge-controller@72.0.2
[72.0.1]: https://github.com/MetaMask/core/compare/@metamask/bridge-controller@72.0.0...@metamask/bridge-controller@72.0.1
diff --git a/packages/bridge-controller/package.json b/packages/bridge-controller/package.json
index bc065c5084..ad2f1b43c1 100644
--- a/packages/bridge-controller/package.json
+++ b/packages/bridge-controller/package.json
@@ -1,6 +1,6 @@
{
"name": "@metamask/bridge-controller",
- "version": "72.0.3",
+ "version": "72.0.4",
"description": "Manages bridge-related quote fetching functionality for MetaMask",
"keywords": [
"Ethereum",
@@ -57,17 +57,17 @@
"@ethersproject/constants": "^5.7.0",
"@ethersproject/contracts": "^5.7.0",
"@ethersproject/providers": "^5.7.0",
- "@metamask/accounts-controller": "^38.1.0",
- "@metamask/assets-controller": "^7.1.0",
- "@metamask/assets-controllers": "^107.0.0",
+ "@metamask/accounts-controller": "^38.1.1",
+ "@metamask/assets-controller": "^7.1.1",
+ "@metamask/assets-controllers": "^108.0.0",
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/gas-fee-controller": "^26.2.1",
"@metamask/keyring-api": "^23.1.0",
"@metamask/messenger": "^1.2.0",
"@metamask/metamask-eth-abis": "^3.1.1",
"@metamask/multichain-network-controller": "^3.1.1",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@metamask/polling-controller": "^16.0.5",
"@metamask/profile-sync-controller": "^28.0.2",
"@metamask/remote-feature-flag-controller": "^4.2.1",
diff --git a/packages/bridge-status-controller/CHANGELOG.md b/packages/bridge-status-controller/CHANGELOG.md
index 7d2e375e42..1c0f79ab54 100644
--- a/packages/bridge-status-controller/CHANGELOG.md
+++ b/packages/bridge-status-controller/CHANGELOG.md
@@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [71.1.4]
+
+### Changed
+
+- Bump `@metamask/accounts-controller` from `^38.1.0` to `^38.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/bridge-controller` from `^72.0.3` to `^72.0.4` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/network-controller` from `^31.1.0` to `^32.0.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [71.1.3]
### Changed
@@ -1181,7 +1190,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Initial release ([#5317](https://github.com/MetaMask/core/pull/5317))
-[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@71.1.3...HEAD
+[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@71.1.4...HEAD
+[71.1.4]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@71.1.3...@metamask/bridge-status-controller@71.1.4
[71.1.3]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@71.1.2...@metamask/bridge-status-controller@71.1.3
[71.1.2]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@71.1.1...@metamask/bridge-status-controller@71.1.2
[71.1.1]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@71.1.0...@metamask/bridge-status-controller@71.1.1
diff --git a/packages/bridge-status-controller/package.json b/packages/bridge-status-controller/package.json
index 0788e65aeb..a020056345 100644
--- a/packages/bridge-status-controller/package.json
+++ b/packages/bridge-status-controller/package.json
@@ -1,6 +1,6 @@
{
"name": "@metamask/bridge-status-controller",
- "version": "71.1.3",
+ "version": "71.1.4",
"description": "Manages bridge-related status fetching functionality for MetaMask",
"keywords": [
"Ethereum",
@@ -52,14 +52,14 @@
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
},
"dependencies": {
- "@metamask/accounts-controller": "^38.1.0",
+ "@metamask/accounts-controller": "^38.1.1",
"@metamask/base-controller": "^9.1.0",
- "@metamask/bridge-controller": "^72.0.3",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/bridge-controller": "^72.0.4",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/gas-fee-controller": "^26.2.1",
"@metamask/keyring-controller": "^25.5.0",
"@metamask/messenger": "^1.2.0",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@metamask/polling-controller": "^16.0.5",
"@metamask/profile-sync-controller": "^28.0.2",
"@metamask/snaps-controllers": "^19.0.0",
diff --git a/packages/chain-agnostic-permission/CHANGELOG.md b/packages/chain-agnostic-permission/CHANGELOG.md
index e5c5b69636..fb760a5f33 100644
--- a/packages/chain-agnostic-permission/CHANGELOG.md
+++ b/packages/chain-agnostic-permission/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [1.6.1]
### Changed
diff --git a/packages/chain-agnostic-permission/package.json b/packages/chain-agnostic-permission/package.json
index 61800cfbec..bbe8dde61c 100644
--- a/packages/chain-agnostic-permission/package.json
+++ b/packages/chain-agnostic-permission/package.json
@@ -52,7 +52,7 @@
},
"dependencies": {
"@metamask/api-specs": "^0.14.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/permission-controller": "^13.1.1",
"@metamask/rpc-errors": "^7.0.2",
"@metamask/utils": "^11.9.0",
diff --git a/packages/chomp-api-service/CHANGELOG.md b/packages/chomp-api-service/CHANGELOG.md
index fdd9182667..f0484419b1 100644
--- a/packages/chomp-api-service/CHANGELOG.md
+++ b/packages/chomp-api-service/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [3.1.0]
### Changed
diff --git a/packages/chomp-api-service/package.json b/packages/chomp-api-service/package.json
index 1b388da2c1..78d9e2330f 100644
--- a/packages/chomp-api-service/package.json
+++ b/packages/chomp-api-service/package.json
@@ -52,7 +52,7 @@
},
"dependencies": {
"@metamask/base-data-service": "^0.1.2",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/messenger": "^1.2.0",
"@metamask/superstruct": "^3.1.0",
"@metamask/utils": "^11.9.0",
diff --git a/packages/claims-controller/CHANGELOG.md b/packages/claims-controller/CHANGELOG.md
index 7e4ad0e02a..15662986f2 100644
--- a/packages/claims-controller/CHANGELOG.md
+++ b/packages/claims-controller/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [0.5.1]
### Changed
diff --git a/packages/claims-controller/package.json b/packages/claims-controller/package.json
index 90cf681bf0..f9cb3b0870 100644
--- a/packages/claims-controller/package.json
+++ b/packages/claims-controller/package.json
@@ -54,7 +54,7 @@
},
"dependencies": {
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/keyring-controller": "^25.5.0",
"@metamask/messenger": "^1.2.0",
"@metamask/profile-sync-controller": "^28.0.2",
diff --git a/packages/compliance-controller/CHANGELOG.md b/packages/compliance-controller/CHANGELOG.md
index 10beedd9c6..69fdef8341 100644
--- a/packages/compliance-controller/CHANGELOG.md
+++ b/packages/compliance-controller/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [2.0.1]
### Changed
diff --git a/packages/compliance-controller/package.json b/packages/compliance-controller/package.json
index eaca995fff..23f88e21a7 100644
--- a/packages/compliance-controller/package.json
+++ b/packages/compliance-controller/package.json
@@ -54,7 +54,7 @@
},
"dependencies": {
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/messenger": "^1.2.0",
"@metamask/superstruct": "^3.1.0",
"@metamask/utils": "^11.9.0",
diff --git a/packages/config-registry-controller/CHANGELOG.md b/packages/config-registry-controller/CHANGELOG.md
index 6938ce5f76..8da9c85691 100644
--- a/packages/config-registry-controller/CHANGELOG.md
+++ b/packages/config-registry-controller/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [0.3.1]
### Changed
diff --git a/packages/config-registry-controller/package.json b/packages/config-registry-controller/package.json
index e94fa1f8a2..74201544ff 100644
--- a/packages/config-registry-controller/package.json
+++ b/packages/config-registry-controller/package.json
@@ -55,7 +55,7 @@
},
"dependencies": {
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/keyring-controller": "^25.5.0",
"@metamask/messenger": "^1.2.0",
"@metamask/polling-controller": "^16.0.5",
diff --git a/packages/controller-utils/CHANGELOG.md b/packages/controller-utils/CHANGELOG.md
index b271c0cdfe..2b259a8304 100644
--- a/packages/controller-utils/CHANGELOG.md
+++ b/packages/controller-utils/CHANGELOG.md
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [12.1.0]
+
### Added
- Add `DEFAULT_INFURA_NETWORKS` with Infura network names to be enabled by default ([#8767](https://github.com/MetaMask/core/pull/8767))
@@ -666,7 +668,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
All changes listed after this point were applied to this package following the monorepo conversion.
-[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/controller-utils@12.0.0...HEAD
+[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/controller-utils@12.1.0...HEAD
+[12.1.0]: https://github.com/MetaMask/core/compare/@metamask/controller-utils@12.0.0...@metamask/controller-utils@12.1.0
[12.0.0]: https://github.com/MetaMask/core/compare/@metamask/controller-utils@11.20.0...@metamask/controller-utils@12.0.0
[11.20.0]: https://github.com/MetaMask/core/compare/@metamask/controller-utils@11.19.0...@metamask/controller-utils@11.20.0
[11.19.0]: https://github.com/MetaMask/core/compare/@metamask/controller-utils@11.18.0...@metamask/controller-utils@11.19.0
diff --git a/packages/controller-utils/package.json b/packages/controller-utils/package.json
index f582d8595b..ef99885586 100644
--- a/packages/controller-utils/package.json
+++ b/packages/controller-utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@metamask/controller-utils",
- "version": "12.0.0",
+ "version": "12.1.0",
"description": "Data and convenience functions shared by multiple packages",
"keywords": [
"Ethereum",
diff --git a/packages/core-backend/CHANGELOG.md b/packages/core-backend/CHANGELOG.md
index 691e40cd62..08cdccdd2e 100644
--- a/packages/core-backend/CHANGELOG.md
+++ b/packages/core-backend/CHANGELOG.md
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/accounts-controller` from `^38.1.0` to `^38.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [6.2.2]
### Changed
diff --git a/packages/core-backend/package.json b/packages/core-backend/package.json
index 97dc4a6095..1dbe1eb9ec 100644
--- a/packages/core-backend/package.json
+++ b/packages/core-backend/package.json
@@ -53,8 +53,8 @@
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
},
"dependencies": {
- "@metamask/accounts-controller": "^38.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/accounts-controller": "^38.1.1",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/keyring-controller": "^25.5.0",
"@metamask/messenger": "^1.2.0",
"@metamask/profile-sync-controller": "^28.0.2",
diff --git a/packages/earn-controller/CHANGELOG.md b/packages/earn-controller/CHANGELOG.md
index 1288cce7b6..0dd920a0e1 100644
--- a/packages/earn-controller/CHANGELOG.md
+++ b/packages/earn-controller/CHANGELOG.md
@@ -7,9 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [12.1.2]
+
### Changed
-- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765))
+- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
## [12.1.1]
@@ -106,7 +109,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Bump `@metamask/network-controller` from `^29.0.0` to `^30.0.0` ([#7996](https://github.com/MetaMask/core/pull/7996))
- Bump `@metamask/keyring-api` from `^21.0.0` to `^21.5.0` ([#7857](https://github.com/MetaMask/core/pull/7857))
-- Bump `@metamask/account-tree-controller` from `^4.0.0` to `^4.1.1` ([#7869](https://github.com/MetaMask/core/pull/7869)), ([#7897](https://github.com/MetaMask/core/pull/7897))
+- Bump `@metamask/account-tree-controller` from `^4.0.0` to `^4.1.1`, ([#7869](https://github.com/MetaMask/core/pull/7869), [#7897](https://github.com/MetaMask/core/pull/7897))
- Bump `@metamask/controller-utils` from `^11.18.0` to `^11.19.0` ([#7995](https://github.com/MetaMask/core/pull/7995))
## [11.1.0]
@@ -446,7 +449,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Initial release ([#5271](https://github.com/MetaMask/core/pull/5271))
-[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/earn-controller@12.1.1...HEAD
+[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/earn-controller@12.1.2...HEAD
+[12.1.2]: https://github.com/MetaMask/core/compare/@metamask/earn-controller@12.1.1...@metamask/earn-controller@12.1.2
[12.1.1]: https://github.com/MetaMask/core/compare/@metamask/earn-controller@12.1.0...@metamask/earn-controller@12.1.1
[12.1.0]: https://github.com/MetaMask/core/compare/@metamask/earn-controller@12.0.0...@metamask/earn-controller@12.1.0
[12.0.0]: https://github.com/MetaMask/core/compare/@metamask/earn-controller@11.2.1...@metamask/earn-controller@12.0.0
diff --git a/packages/earn-controller/package.json b/packages/earn-controller/package.json
index 2bb0060285..ebce8d3af3 100644
--- a/packages/earn-controller/package.json
+++ b/packages/earn-controller/package.json
@@ -1,6 +1,6 @@
{
"name": "@metamask/earn-controller",
- "version": "12.1.1",
+ "version": "12.1.2",
"description": "Manages state for earning features and coordinates interactions between staking services, SDK integrations, and other controllers to enable users to participate in various earning opportunities",
"keywords": [
"Ethereum",
@@ -57,10 +57,10 @@
"@ethersproject/providers": "^5.7.0",
"@metamask/account-tree-controller": "^7.3.0",
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/keyring-api": "^23.1.0",
"@metamask/messenger": "^1.2.0",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@metamask/stake-sdk": "^3.2.1",
"reselect": "^5.1.1"
},
diff --git a/packages/eip-7702-internal-rpc-middleware/CHANGELOG.md b/packages/eip-7702-internal-rpc-middleware/CHANGELOG.md
index cce54fdab4..fcf4591c23 100644
--- a/packages/eip-7702-internal-rpc-middleware/CHANGELOG.md
+++ b/packages/eip-7702-internal-rpc-middleware/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [0.1.1]
### Changed
diff --git a/packages/eip-7702-internal-rpc-middleware/package.json b/packages/eip-7702-internal-rpc-middleware/package.json
index 004c0b9b3b..9b4d3169c7 100644
--- a/packages/eip-7702-internal-rpc-middleware/package.json
+++ b/packages/eip-7702-internal-rpc-middleware/package.json
@@ -51,7 +51,7 @@
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
},
"dependencies": {
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/rpc-errors": "^7.0.2",
"@metamask/superstruct": "^3.1.0",
"@metamask/utils": "^11.9.0"
diff --git a/packages/eip1193-permission-middleware/CHANGELOG.md b/packages/eip1193-permission-middleware/CHANGELOG.md
index eb6869cb08..eb075645c0 100644
--- a/packages/eip1193-permission-middleware/CHANGELOG.md
+++ b/packages/eip1193-permission-middleware/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [2.0.1]
### Changed
diff --git a/packages/eip1193-permission-middleware/package.json b/packages/eip1193-permission-middleware/package.json
index 8c5c2d725b..8492deaa7b 100644
--- a/packages/eip1193-permission-middleware/package.json
+++ b/packages/eip1193-permission-middleware/package.json
@@ -52,7 +52,7 @@
},
"dependencies": {
"@metamask/chain-agnostic-permission": "^1.6.1",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/json-rpc-engine": "^10.5.0",
"@metamask/permission-controller": "^13.1.1",
"@metamask/utils": "^11.9.0",
diff --git a/packages/ens-controller/CHANGELOG.md b/packages/ens-controller/CHANGELOG.md
index f62cb48044..b084a89271 100644
--- a/packages/ens-controller/CHANGELOG.md
+++ b/packages/ens-controller/CHANGELOG.md
@@ -7,9 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [19.1.3]
+
### Changed
-- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765))
+- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
## [19.1.2]
@@ -136,9 +139,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
-- Bump `@metamask/base-controller` from `^7.0.2` to `^8.0.0` ([#5079](https://github.com/MetaMask/core/pull/5079)), ([#5135](https://github.com/MetaMask/core/pull/5135)), ([#5305](https://github.com/MetaMask/core/pull/5305))
-- Bump `@metamask/controller-utils` from `^11.4.4` to `^11.5.0` ([#5135](https://github.com/MetaMask/core/pull/5135)), ([#5272](https://github.com/MetaMask/core/pull/5272))
-- Bump `@metamask/utils` from `^10.0.0` to `^11.1.0` ([#5080](https://github.com/MetaMask/core/pull/5080)), ([#5223](https://github.com/MetaMask/core/pull/5223))
+- Bump `@metamask/base-controller` from `^7.0.2` to `^8.0.0`,, ([#5079](https://github.com/MetaMask/core/pull/5079), [#5135](https://github.com/MetaMask/core/pull/5135), [#5305](https://github.com/MetaMask/core/pull/5305))
+- Bump `@metamask/controller-utils` from `^11.4.4` to `^11.5.0`, ([#5135](https://github.com/MetaMask/core/pull/5135), [#5272](https://github.com/MetaMask/core/pull/5272))
+- Bump `@metamask/utils` from `^10.0.0` to `^11.1.0`, ([#5080](https://github.com/MetaMask/core/pull/5080), [#5223](https://github.com/MetaMask/core/pull/5223))
## [15.0.1]
@@ -172,7 +175,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
["Are the Types Wrong?"](https://arethetypeswrong.github.io/) tool as
["masquerading as CJS"](https://github.com/arethetypeswrong/arethetypeswrong.github.io/blob/main/docs/problems/FalseCJS.md).
All of the ATTW checks now pass.
-- Remove chunk files ([#4648](https://github.com/MetaMask/core/pull/4648)).
+- Remove chunk files. ([#4648](https://github.com/MetaMask/core/pull/4648))
- Previously, the build tool we used to generate JavaScript files extracted
common code to "chunk" files. While this was intended to make this package
more tree-shakeable, it also made debugging more difficult for our
@@ -398,7 +401,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
All changes listed after this point were applied to this package following the monorepo conversion.
-[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/ens-controller@19.1.2...HEAD
+[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/ens-controller@19.1.3...HEAD
+[19.1.3]: https://github.com/MetaMask/core/compare/@metamask/ens-controller@19.1.2...@metamask/ens-controller@19.1.3
[19.1.2]: https://github.com/MetaMask/core/compare/@metamask/ens-controller@19.1.1...@metamask/ens-controller@19.1.2
[19.1.1]: https://github.com/MetaMask/core/compare/@metamask/ens-controller@19.1.0...@metamask/ens-controller@19.1.1
[19.1.0]: https://github.com/MetaMask/core/compare/@metamask/ens-controller@19.0.3...@metamask/ens-controller@19.1.0
diff --git a/packages/ens-controller/package.json b/packages/ens-controller/package.json
index 52b4d83986..6a3a57cf87 100644
--- a/packages/ens-controller/package.json
+++ b/packages/ens-controller/package.json
@@ -1,6 +1,6 @@
{
"name": "@metamask/ens-controller",
- "version": "19.1.2",
+ "version": "19.1.3",
"description": "Maps ENS names to their resolved addresses by chain id",
"keywords": [
"Ethereum",
@@ -55,9 +55,9 @@
"dependencies": {
"@ethersproject/providers": "^5.7.0",
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/messenger": "^1.2.0",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@metamask/utils": "^11.9.0",
"punycode": "^2.1.1"
},
diff --git a/packages/eth-json-rpc-middleware/package.json b/packages/eth-json-rpc-middleware/package.json
index 2d144e35db..4485e3787c 100644
--- a/packages/eth-json-rpc-middleware/package.json
+++ b/packages/eth-json-rpc-middleware/package.json
@@ -71,7 +71,7 @@
},
"devDependencies": {
"@metamask/auto-changelog": "^6.1.0",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@ts-bridge/cli": "^0.6.4",
"@types/deep-freeze-strict": "^1.1.0",
"@types/jest": "^29.5.14",
diff --git a/packages/gas-fee-controller/CHANGELOG.md b/packages/gas-fee-controller/CHANGELOG.md
index 9f6a12bb22..1e652c65fb 100644
--- a/packages/gas-fee-controller/CHANGELOG.md
+++ b/packages/gas-fee-controller/CHANGELOG.md
@@ -9,7 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
-- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765))
+- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
## [26.2.1]
diff --git a/packages/gas-fee-controller/package.json b/packages/gas-fee-controller/package.json
index a9f654e20e..3a18f10a44 100644
--- a/packages/gas-fee-controller/package.json
+++ b/packages/gas-fee-controller/package.json
@@ -54,11 +54,11 @@
},
"dependencies": {
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/eth-query": "^4.0.0",
"@metamask/ethjs-unit": "^0.3.0",
"@metamask/messenger": "^1.2.0",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@metamask/polling-controller": "^16.0.5",
"@metamask/utils": "^11.9.0",
"@types/bn.js": "^5.1.5",
diff --git a/packages/gator-permissions-controller/CHANGELOG.md b/packages/gator-permissions-controller/CHANGELOG.md
index fd6f0a2b35..f5d56588b3 100644
--- a/packages/gator-permissions-controller/CHANGELOG.md
+++ b/packages/gator-permissions-controller/CHANGELOG.md
@@ -7,9 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [4.1.2]
+
### Changed
-- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765))
+- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774))
## [4.1.1]
@@ -244,7 +246,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Initial release ([#6033](https://github.com/MetaMask/core/pull/6033))
-[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/gator-permissions-controller@4.1.1...HEAD
+[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/gator-permissions-controller@4.1.2...HEAD
+[4.1.2]: https://github.com/MetaMask/core/compare/@metamask/gator-permissions-controller@4.1.1...@metamask/gator-permissions-controller@4.1.2
[4.1.1]: https://github.com/MetaMask/core/compare/@metamask/gator-permissions-controller@4.1.0...@metamask/gator-permissions-controller@4.1.1
[4.1.0]: https://github.com/MetaMask/core/compare/@metamask/gator-permissions-controller@4.0.0...@metamask/gator-permissions-controller@4.1.0
[4.0.0]: https://github.com/MetaMask/core/compare/@metamask/gator-permissions-controller@3.0.1...@metamask/gator-permissions-controller@4.0.0
diff --git a/packages/gator-permissions-controller/package.json b/packages/gator-permissions-controller/package.json
index 1c44868f78..e55b53610f 100644
--- a/packages/gator-permissions-controller/package.json
+++ b/packages/gator-permissions-controller/package.json
@@ -1,6 +1,6 @@
{
"name": "@metamask/gator-permissions-controller",
- "version": "4.1.1",
+ "version": "4.1.2",
"description": "Controller for managing gator permissions with profile sync integration",
"keywords": [
"Ethereum",
@@ -59,7 +59,7 @@
"@metamask/delegation-core": "^2.0.0",
"@metamask/delegation-deployments": "^1.3.0",
"@metamask/messenger": "^1.2.0",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@metamask/snaps-controllers": "^19.0.0",
"@metamask/snaps-sdk": "^11.0.0",
"@metamask/snaps-utils": "^12.1.2",
diff --git a/packages/geolocation-controller/CHANGELOG.md b/packages/geolocation-controller/CHANGELOG.md
index 8e12a3b0f2..e5c499c769 100644
--- a/packages/geolocation-controller/CHANGELOG.md
+++ b/packages/geolocation-controller/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [0.1.3]
### Changed
diff --git a/packages/geolocation-controller/package.json b/packages/geolocation-controller/package.json
index f80abfb11e..70351f3b0a 100644
--- a/packages/geolocation-controller/package.json
+++ b/packages/geolocation-controller/package.json
@@ -54,7 +54,7 @@
},
"dependencies": {
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/messenger": "^1.2.0"
},
"devDependencies": {
diff --git a/packages/logging-controller/CHANGELOG.md b/packages/logging-controller/CHANGELOG.md
index bc6aa0e819..414e6703f2 100644
--- a/packages/logging-controller/CHANGELOG.md
+++ b/packages/logging-controller/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [8.0.2]
### Changed
diff --git a/packages/logging-controller/package.json b/packages/logging-controller/package.json
index 260d4a5b21..72083cfc12 100644
--- a/packages/logging-controller/package.json
+++ b/packages/logging-controller/package.json
@@ -54,7 +54,7 @@
},
"dependencies": {
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/messenger": "^1.2.0",
"uuid": "^8.3.2"
},
diff --git a/packages/message-manager/CHANGELOG.md b/packages/message-manager/CHANGELOG.md
index e4f9edd64b..c00daf76cb 100644
--- a/packages/message-manager/CHANGELOG.md
+++ b/packages/message-manager/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [14.1.2]
### Changed
diff --git a/packages/message-manager/package.json b/packages/message-manager/package.json
index a74f9b4f10..680620dd81 100644
--- a/packages/message-manager/package.json
+++ b/packages/message-manager/package.json
@@ -52,7 +52,7 @@
},
"dependencies": {
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/eth-sig-util": "^8.2.0",
"@metamask/messenger": "^1.2.0",
"@metamask/utils": "^11.9.0",
diff --git a/packages/money-account-balance-service/CHANGELOG.md b/packages/money-account-balance-service/CHANGELOG.md
index 1fd2c0ddf8..8c6a42e411 100644
--- a/packages/money-account-balance-service/CHANGELOG.md
+++ b/packages/money-account-balance-service/CHANGELOG.md
@@ -7,9 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [1.0.2]
+
### Changed
-- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765))
+- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
## [1.0.1]
@@ -53,7 +56,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Compute mUSD-equivalent value of vault share holdings (`getMusdEquivalentValue`)
- Fetch vault APY from the Veda performance REST API (`getVaultApy`)
-[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/money-account-balance-service@1.0.1...HEAD
+[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/money-account-balance-service@1.0.2...HEAD
+[1.0.2]: https://github.com/MetaMask/core/compare/@metamask/money-account-balance-service@1.0.1...@metamask/money-account-balance-service@1.0.2
[1.0.1]: https://github.com/MetaMask/core/compare/@metamask/money-account-balance-service@1.0.0...@metamask/money-account-balance-service@1.0.1
[1.0.0]: https://github.com/MetaMask/core/compare/@metamask/money-account-balance-service@0.2.0...@metamask/money-account-balance-service@1.0.0
[0.2.0]: https://github.com/MetaMask/core/compare/@metamask/money-account-balance-service@0.1.0...@metamask/money-account-balance-service@0.2.0
diff --git a/packages/money-account-balance-service/package.json b/packages/money-account-balance-service/package.json
index 612b6cb531..47555750bc 100644
--- a/packages/money-account-balance-service/package.json
+++ b/packages/money-account-balance-service/package.json
@@ -1,6 +1,6 @@
{
"name": "@metamask/money-account-balance-service",
- "version": "1.0.1",
+ "version": "1.0.2",
"description": "Data service for fetching Money account balances, exchange rates, and vault APY",
"keywords": [
"Ethereum",
@@ -56,10 +56,10 @@
"@ethersproject/contracts": "^5.7.0",
"@ethersproject/providers": "^5.7.0",
"@metamask/base-data-service": "^0.1.2",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/messenger": "^1.2.0",
"@metamask/metamask-eth-abis": "^3.1.1",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@metamask/remote-feature-flag-controller": "^4.2.1",
"@metamask/superstruct": "^3.1.0",
"@metamask/utils": "^11.9.0"
diff --git a/packages/money-account-controller/CHANGELOG.md b/packages/money-account-controller/CHANGELOG.md
index fbcef004be..00855c3838 100644
--- a/packages/money-account-controller/CHANGELOG.md
+++ b/packages/money-account-controller/CHANGELOG.md
@@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
-- Bump `@metamask/accounts-controller` from `^38.0.0` to `^38.1.0` ([#8755](https://github.com/MetaMask/core/pull/8755))
+- Bump `@metamask/accounts-controller` from `^38.0.0` to `^38.1.1` ([#8755](https://github.com/MetaMask/core/pull/8755), [#8774](https://github.com/MetaMask/core/pull/8774))
## [0.3.0]
diff --git a/packages/money-account-controller/package.json b/packages/money-account-controller/package.json
index cfadbfa915..8f2c9a5619 100644
--- a/packages/money-account-controller/package.json
+++ b/packages/money-account-controller/package.json
@@ -53,7 +53,7 @@
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
},
"dependencies": {
- "@metamask/accounts-controller": "^38.1.0",
+ "@metamask/accounts-controller": "^38.1.1",
"@metamask/base-controller": "^9.1.0",
"@metamask/eth-money-keyring": "^2.0.4",
"@metamask/keyring-api": "^23.1.0",
diff --git a/packages/money-account-upgrade-controller/CHANGELOG.md b/packages/money-account-upgrade-controller/CHANGELOG.md
index d5c375aaaf..ea90a8a858 100644
--- a/packages/money-account-upgrade-controller/CHANGELOG.md
+++ b/packages/money-account-upgrade-controller/CHANGELOG.md
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [2.0.1]
+
+### Changed
+
+- Bump `@metamask/network-controller` from `^31.1.0` to `^32.0.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [2.0.0]
### Added
@@ -79,7 +85,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Add `MoneyAccountUpgradeController` with `upgradeAccount` method ([#8426](https://github.com/MetaMask/core/pull/8426))
-[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/money-account-upgrade-controller@2.0.0...HEAD
+[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/money-account-upgrade-controller@2.0.1...HEAD
+[2.0.1]: https://github.com/MetaMask/core/compare/@metamask/money-account-upgrade-controller@2.0.0...@metamask/money-account-upgrade-controller@2.0.1
[2.0.0]: https://github.com/MetaMask/core/compare/@metamask/money-account-upgrade-controller@1.3.2...@metamask/money-account-upgrade-controller@2.0.0
[1.3.2]: https://github.com/MetaMask/core/compare/@metamask/money-account-upgrade-controller@1.3.1...@metamask/money-account-upgrade-controller@1.3.2
[1.3.1]: https://github.com/MetaMask/core/compare/@metamask/money-account-upgrade-controller@1.3.0...@metamask/money-account-upgrade-controller@1.3.1
diff --git a/packages/money-account-upgrade-controller/package.json b/packages/money-account-upgrade-controller/package.json
index a2a7851848..961f715505 100644
--- a/packages/money-account-upgrade-controller/package.json
+++ b/packages/money-account-upgrade-controller/package.json
@@ -1,6 +1,6 @@
{
"name": "@metamask/money-account-upgrade-controller",
- "version": "2.0.0",
+ "version": "2.0.1",
"description": "MetaMask Money account upgrade controller",
"keywords": [
"Ethereum",
@@ -61,7 +61,7 @@
"@metamask/delegation-deployments": "^1.3.0",
"@metamask/keyring-controller": "^25.5.0",
"@metamask/messenger": "^1.2.0",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@metamask/utils": "^11.9.0"
},
"devDependencies": {
diff --git a/packages/multichain-account-service/CHANGELOG.md b/packages/multichain-account-service/CHANGELOG.md
index c1cc881d7b..d6cef628ae 100644
--- a/packages/multichain-account-service/CHANGELOG.md
+++ b/packages/multichain-account-service/CHANGELOG.md
@@ -17,7 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Removed `MultichainAccountServiceConfig.snapPlatformWatcher` and the `SnapPlatformWatcherConfig` type export. Configure the keyring-wait timeout via `SnapAccountService`'s `config.snapPlatformWatcher.snapKeyringWaitTimeoutMs` instead.
- The service messenger no longer needs `SnapController:getState`, `SnapController:stateChange` or `KeyringController:stateChange`.
- **BREAKING:** Rename `SnapAccountProvider.ensureCanUseSnapPlatform()` to `ensureReady()` ([#8715](https://github.com/MetaMask/core/pull/8715))
-- Bump `@metamask/accounts-controller` from `^38.0.0` to `^38.1.0` ([#8755](https://github.com/MetaMask/core/pull/8755))
+- Bump `@metamask/accounts-controller` from `^38.0.0` to `^38.1.1` ([#8755](https://github.com/MetaMask/core/pull/8755), [#8774](https://github.com/MetaMask/core/pull/8774))
## [9.0.0]
diff --git a/packages/multichain-account-service/package.json b/packages/multichain-account-service/package.json
index 444863bc02..7c5d024f77 100644
--- a/packages/multichain-account-service/package.json
+++ b/packages/multichain-account-service/package.json
@@ -54,7 +54,7 @@
},
"dependencies": {
"@ethereumjs/util": "^9.1.0",
- "@metamask/accounts-controller": "^38.1.0",
+ "@metamask/accounts-controller": "^38.1.1",
"@metamask/base-controller": "^9.1.0",
"@metamask/eth-snap-keyring": "^22.0.1",
"@metamask/key-tree": "^10.1.1",
@@ -76,7 +76,7 @@
"devDependencies": {
"@metamask/account-api": "^1.0.4",
"@metamask/auto-changelog": "^6.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/eth-hd-keyring": "^14.1.1",
"@metamask/providers": "^22.1.0",
"@ts-bridge/cli": "^0.6.4",
diff --git a/packages/multichain-api-middleware/CHANGELOG.md b/packages/multichain-api-middleware/CHANGELOG.md
index b48693dbc6..15baf237a3 100644
--- a/packages/multichain-api-middleware/CHANGELOG.md
+++ b/packages/multichain-api-middleware/CHANGELOG.md
@@ -7,9 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [3.1.2]
+
### Changed
-- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765))
+- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/accounts-controller` from `^38.1.0` to `^38.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
## [3.1.1]
@@ -225,7 +229,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Initial release
-[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/multichain-api-middleware@3.1.1...HEAD
+[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/multichain-api-middleware@3.1.2...HEAD
+[3.1.2]: https://github.com/MetaMask/core/compare/@metamask/multichain-api-middleware@3.1.1...@metamask/multichain-api-middleware@3.1.2
[3.1.1]: https://github.com/MetaMask/core/compare/@metamask/multichain-api-middleware@3.1.0...@metamask/multichain-api-middleware@3.1.1
[3.1.0]: https://github.com/MetaMask/core/compare/@metamask/multichain-api-middleware@3.0.0...@metamask/multichain-api-middleware@3.1.0
[3.0.0]: https://github.com/MetaMask/core/compare/@metamask/multichain-api-middleware@2.0.0...@metamask/multichain-api-middleware@3.0.0
diff --git a/packages/multichain-api-middleware/package.json b/packages/multichain-api-middleware/package.json
index 8fb6c1ae84..3c30d5ccd5 100644
--- a/packages/multichain-api-middleware/package.json
+++ b/packages/multichain-api-middleware/package.json
@@ -1,6 +1,6 @@
{
"name": "@metamask/multichain-api-middleware",
- "version": "3.1.1",
+ "version": "3.1.2",
"description": "JSON-RPC methods and middleware to support the MetaMask Multichain API",
"keywords": [
"Ethereum",
@@ -51,12 +51,12 @@
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
},
"dependencies": {
- "@metamask/accounts-controller": "^38.1.0",
+ "@metamask/accounts-controller": "^38.1.1",
"@metamask/api-specs": "^0.14.0",
"@metamask/chain-agnostic-permission": "^1.6.1",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/json-rpc-engine": "^10.5.0",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@metamask/permission-controller": "^13.1.1",
"@metamask/rpc-errors": "^7.0.2",
"@metamask/snaps-controllers": "^19.0.0",
diff --git a/packages/multichain-network-controller/CHANGELOG.md b/packages/multichain-network-controller/CHANGELOG.md
index 409e11aaea..c39d6e8dd9 100644
--- a/packages/multichain-network-controller/CHANGELOG.md
+++ b/packages/multichain-network-controller/CHANGELOG.md
@@ -9,7 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
-- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765))
+- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/accounts-controller` from `^38.1.0` to `^38.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
## [3.1.1]
diff --git a/packages/multichain-network-controller/package.json b/packages/multichain-network-controller/package.json
index e632aede33..e0a8cb89cc 100644
--- a/packages/multichain-network-controller/package.json
+++ b/packages/multichain-network-controller/package.json
@@ -53,13 +53,13 @@
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
},
"dependencies": {
- "@metamask/accounts-controller": "^38.1.0",
+ "@metamask/accounts-controller": "^38.1.1",
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/keyring-api": "^23.1.0",
"@metamask/keyring-internal-api": "^11.0.1",
"@metamask/messenger": "^1.2.0",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@metamask/superstruct": "^3.1.0",
"@metamask/utils": "^11.9.0",
"@solana/addresses": "^2.0.0",
diff --git a/packages/multichain-transactions-controller/CHANGELOG.md b/packages/multichain-transactions-controller/CHANGELOG.md
index 3da6980494..3eed8fcb99 100644
--- a/packages/multichain-transactions-controller/CHANGELOG.md
+++ b/packages/multichain-transactions-controller/CHANGELOG.md
@@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
-- Bump `@metamask/accounts-controller` from `^38.0.0` to `^38.1.0` ([#8755](https://github.com/MetaMask/core/pull/8755))
+- Bump `@metamask/accounts-controller` from `^38.0.0` to `^38.1.1` ([#8755](https://github.com/MetaMask/core/pull/8755), [#8774](https://github.com/MetaMask/core/pull/8774))
- Bump `@metamask/polling-controller` from `^16.0.4` to `^16.0.5` ([#8755](https://github.com/MetaMask/core/pull/8755))
## [7.1.0]
diff --git a/packages/multichain-transactions-controller/package.json b/packages/multichain-transactions-controller/package.json
index 3d1e3435fd..e78c3dd6ec 100644
--- a/packages/multichain-transactions-controller/package.json
+++ b/packages/multichain-transactions-controller/package.json
@@ -53,7 +53,7 @@
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
},
"dependencies": {
- "@metamask/accounts-controller": "^38.1.0",
+ "@metamask/accounts-controller": "^38.1.1",
"@metamask/base-controller": "^9.1.0",
"@metamask/keyring-api": "^23.1.0",
"@metamask/keyring-internal-api": "^11.0.1",
diff --git a/packages/name-controller/CHANGELOG.md b/packages/name-controller/CHANGELOG.md
index bd8c282ff5..68aeac2afa 100644
--- a/packages/name-controller/CHANGELOG.md
+++ b/packages/name-controller/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [9.1.2]
### Changed
diff --git a/packages/name-controller/package.json b/packages/name-controller/package.json
index 9013ae823f..31d0544abc 100644
--- a/packages/name-controller/package.json
+++ b/packages/name-controller/package.json
@@ -55,7 +55,7 @@
},
"dependencies": {
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/messenger": "^1.2.0",
"@metamask/utils": "^11.9.0",
"async-mutex": "^0.5.0"
diff --git a/packages/network-controller/CHANGELOG.md b/packages/network-controller/CHANGELOG.md
index fc10c79f9c..0cf143e822 100644
--- a/packages/network-controller/CHANGELOG.md
+++ b/packages/network-controller/CHANGELOG.md
@@ -7,10 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [32.0.0]
+
### Changed
- **BREAKING:** Remove Sei, MegaETH, Avalanche, and ZKSync from list of default networks ([#8767](https://github.com/MetaMask/core/pull/8767))
- You will need to add them as network configurations first before switching to them.
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
## [31.1.0]
@@ -1182,7 +1185,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
All changes listed after this point were applied to this package following the monorepo conversion.
-[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/network-controller@31.1.0...HEAD
+[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/network-controller@32.0.0...HEAD
+[32.0.0]: https://github.com/MetaMask/core/compare/@metamask/network-controller@31.1.0...@metamask/network-controller@32.0.0
[31.1.0]: https://github.com/MetaMask/core/compare/@metamask/network-controller@31.0.0...@metamask/network-controller@31.1.0
[31.0.0]: https://github.com/MetaMask/core/compare/@metamask/network-controller@30.1.0...@metamask/network-controller@31.0.0
[30.1.0]: https://github.com/MetaMask/core/compare/@metamask/network-controller@30.0.1...@metamask/network-controller@30.1.0
diff --git a/packages/network-controller/package.json b/packages/network-controller/package.json
index 95fb1b4a35..d48d99f683 100644
--- a/packages/network-controller/package.json
+++ b/packages/network-controller/package.json
@@ -1,6 +1,6 @@
{
"name": "@metamask/network-controller",
- "version": "31.1.0",
+ "version": "32.0.0",
"description": "Provides an interface to the currently selected network via a MetaMask-compatible provider object",
"keywords": [
"Ethereum",
@@ -55,7 +55,7 @@
"dependencies": {
"@metamask/base-controller": "^9.1.0",
"@metamask/connectivity-controller": "^0.2.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/eth-block-tracker": "^15.0.1",
"@metamask/eth-json-rpc-infura": "^10.3.0",
"@metamask/eth-json-rpc-middleware": "^23.1.3",
diff --git a/packages/network-enablement-controller/CHANGELOG.md b/packages/network-enablement-controller/CHANGELOG.md
index 1348e07859..9268a902ae 100644
--- a/packages/network-enablement-controller/CHANGELOG.md
+++ b/packages/network-enablement-controller/CHANGELOG.md
@@ -10,7 +10,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- Add Monad mainnet (`0x8f`, chain ID 143) to the default enabled network map for new users ([#8743](https://github.com/MetaMask/core/pull/8743))
-- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765))
+- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
## [5.1.1]
diff --git a/packages/network-enablement-controller/package.json b/packages/network-enablement-controller/package.json
index f7e337fc7a..2990af15be 100644
--- a/packages/network-enablement-controller/package.json
+++ b/packages/network-enablement-controller/package.json
@@ -54,11 +54,11 @@
},
"dependencies": {
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/keyring-api": "^23.1.0",
"@metamask/messenger": "^1.2.0",
"@metamask/multichain-network-controller": "^3.1.1",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@metamask/slip44": "^4.3.0",
"@metamask/transaction-controller": "^65.3.0",
"@metamask/utils": "^11.9.0",
diff --git a/packages/notification-services-controller/CHANGELOG.md b/packages/notification-services-controller/CHANGELOG.md
index af221eb0fa..6af7aa9410 100644
--- a/packages/notification-services-controller/CHANGELOG.md
+++ b/packages/notification-services-controller/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [23.1.1]
### Changed
diff --git a/packages/notification-services-controller/package.json b/packages/notification-services-controller/package.json
index c86a084c4b..ee73118105 100644
--- a/packages/notification-services-controller/package.json
+++ b/packages/notification-services-controller/package.json
@@ -107,7 +107,7 @@
"dependencies": {
"@contentful/rich-text-html-renderer": "^16.5.2",
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/keyring-controller": "^25.5.0",
"@metamask/messenger": "^1.2.0",
"@metamask/profile-sync-controller": "^28.0.2",
diff --git a/packages/permission-controller/CHANGELOG.md b/packages/permission-controller/CHANGELOG.md
index 4ddde2cdee..923a2a3f8f 100644
--- a/packages/permission-controller/CHANGELOG.md
+++ b/packages/permission-controller/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [13.1.1]
### Changed
diff --git a/packages/permission-controller/package.json b/packages/permission-controller/package.json
index 5d0622297b..2f8bcfed67 100644
--- a/packages/permission-controller/package.json
+++ b/packages/permission-controller/package.json
@@ -55,7 +55,7 @@
"dependencies": {
"@metamask/approval-controller": "^9.0.1",
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/json-rpc-engine": "^10.5.0",
"@metamask/messenger": "^1.2.0",
"@metamask/rpc-errors": "^7.0.2",
diff --git a/packages/perps-controller/CHANGELOG.md b/packages/perps-controller/CHANGELOG.md
index 7edee5817a..2605d219fd 100644
--- a/packages/perps-controller/CHANGELOG.md
+++ b/packages/perps-controller/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [6.0.1]
### Changed
diff --git a/packages/perps-controller/package.json b/packages/perps-controller/package.json
index c1b1ec9344..76dd2e996b 100644
--- a/packages/perps-controller/package.json
+++ b/packages/perps-controller/package.json
@@ -58,7 +58,7 @@
"dependencies": {
"@metamask/abi-utils": "^2.0.3",
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/messenger": "^1.2.0",
"@metamask/utils": "^11.9.0",
"@nktkas/hyperliquid": "^0.32.2",
@@ -72,7 +72,7 @@
"@metamask/geolocation-controller": "^0.1.3",
"@metamask/keyring-controller": "^25.5.0",
"@metamask/keyring-internal-api": "^11.0.1",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@metamask/profile-sync-controller": "^28.0.2",
"@metamask/remote-feature-flag-controller": "^4.2.1",
"@metamask/transaction-controller": "^65.3.0",
diff --git a/packages/phishing-controller/CHANGELOG.md b/packages/phishing-controller/CHANGELOG.md
index 82f3877f78..e7041f37dd 100644
--- a/packages/phishing-controller/CHANGELOG.md
+++ b/packages/phishing-controller/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [17.1.2]
### Changed
diff --git a/packages/phishing-controller/package.json b/packages/phishing-controller/package.json
index 0373b96ad2..62727c5dab 100644
--- a/packages/phishing-controller/package.json
+++ b/packages/phishing-controller/package.json
@@ -54,7 +54,7 @@
},
"dependencies": {
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/messenger": "^1.2.0",
"@metamask/transaction-controller": "^65.3.0",
"@noble/hashes": "^1.8.0",
diff --git a/packages/polling-controller/CHANGELOG.md b/packages/polling-controller/CHANGELOG.md
index e4825c5511..5246b9d8f0 100644
--- a/packages/polling-controller/CHANGELOG.md
+++ b/packages/polling-controller/CHANGELOG.md
@@ -9,7 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
-- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765))
+- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
## [16.0.5]
diff --git a/packages/polling-controller/package.json b/packages/polling-controller/package.json
index 10631d1ebb..5681321326 100644
--- a/packages/polling-controller/package.json
+++ b/packages/polling-controller/package.json
@@ -52,8 +52,8 @@
},
"dependencies": {
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/controller-utils": "^12.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@metamask/utils": "^11.9.0",
"@types/uuid": "^8.3.0",
"fast-json-stable-stringify": "^2.1.0",
diff --git a/packages/profile-metrics-controller/CHANGELOG.md b/packages/profile-metrics-controller/CHANGELOG.md
index ef1fe8dc37..9a5a6b88a1 100644
--- a/packages/profile-metrics-controller/CHANGELOG.md
+++ b/packages/profile-metrics-controller/CHANGELOG.md
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/accounts-controller` from `^38.1.0` to `^38.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [3.1.4]
### Changed
diff --git a/packages/profile-metrics-controller/package.json b/packages/profile-metrics-controller/package.json
index 92f56df96a..4c5eac6cb4 100644
--- a/packages/profile-metrics-controller/package.json
+++ b/packages/profile-metrics-controller/package.json
@@ -53,9 +53,9 @@
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
},
"dependencies": {
- "@metamask/accounts-controller": "^38.1.0",
+ "@metamask/accounts-controller": "^38.1.1",
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/keyring-controller": "^25.5.0",
"@metamask/messenger": "^1.2.0",
"@metamask/polling-controller": "^16.0.5",
diff --git a/packages/ramps-controller/CHANGELOG.md b/packages/ramps-controller/CHANGELOG.md
index 7cde1209e7..f12b445cfa 100644
--- a/packages/ramps-controller/CHANGELOG.md
+++ b/packages/ramps-controller/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [13.3.1]
### Changed
diff --git a/packages/ramps-controller/package.json b/packages/ramps-controller/package.json
index 6b2eb788e2..8ee2a49b69 100644
--- a/packages/ramps-controller/package.json
+++ b/packages/ramps-controller/package.json
@@ -55,7 +55,7 @@
},
"dependencies": {
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/messenger": "^1.2.0"
},
"devDependencies": {
diff --git a/packages/remote-feature-flag-controller/CHANGELOG.md b/packages/remote-feature-flag-controller/CHANGELOG.md
index 56ef251c6a..0b7be74d54 100644
--- a/packages/remote-feature-flag-controller/CHANGELOG.md
+++ b/packages/remote-feature-flag-controller/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [4.2.1]
### Changed
diff --git a/packages/remote-feature-flag-controller/package.json b/packages/remote-feature-flag-controller/package.json
index c2a6c50e16..4aee0e042c 100644
--- a/packages/remote-feature-flag-controller/package.json
+++ b/packages/remote-feature-flag-controller/package.json
@@ -54,7 +54,7 @@
},
"dependencies": {
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/messenger": "^1.2.0",
"@metamask/utils": "^11.9.0",
"uuid": "^8.3.2"
diff --git a/packages/sample-controllers/CHANGELOG.md b/packages/sample-controllers/CHANGELOG.md
index 428f34b360..66cdc48c94 100644
--- a/packages/sample-controllers/CHANGELOG.md
+++ b/packages/sample-controllers/CHANGELOG.md
@@ -7,9 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [5.0.1]
+
### Changed
-- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765))
+- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774))
## [5.0.0]
@@ -148,7 +150,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Initial release of @metamask/sample-controllers.
-[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/sample-controllers@5.0.0...HEAD
+[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/sample-controllers@5.0.1...HEAD
+[5.0.1]: https://github.com/MetaMask/core/compare/@metamask/sample-controllers@5.0.0...@metamask/sample-controllers@5.0.1
[5.0.0]: https://github.com/MetaMask/core/compare/@metamask/sample-controllers@4.0.4...@metamask/sample-controllers@5.0.0
[4.0.4]: https://github.com/MetaMask/core/compare/@metamask/sample-controllers@4.0.3...@metamask/sample-controllers@4.0.4
[4.0.3]: https://github.com/MetaMask/core/compare/@metamask/sample-controllers@4.0.2...@metamask/sample-controllers@4.0.3
diff --git a/packages/sample-controllers/package.json b/packages/sample-controllers/package.json
index e75382d83c..af86d7edea 100644
--- a/packages/sample-controllers/package.json
+++ b/packages/sample-controllers/package.json
@@ -1,6 +1,6 @@
{
"name": "@metamask/sample-controllers",
- "version": "5.0.0",
+ "version": "5.0.1",
"description": "Sample package to illustrate best practices for controllers",
"keywords": [
"Ethereum",
@@ -56,14 +56,14 @@
"@metamask/base-controller": "^9.1.0",
"@metamask/base-data-service": "^0.1.2",
"@metamask/messenger": "^1.2.0",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@metamask/superstruct": "^3.1.0",
"@metamask/utils": "^11.9.0",
"@tanstack/query-core": "^4.43.0"
},
"devDependencies": {
"@metamask/auto-changelog": "^6.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@ts-bridge/cli": "^0.6.4",
"@types/jest": "^29.5.14",
"deepmerge": "^4.2.2",
diff --git a/packages/selected-network-controller/CHANGELOG.md b/packages/selected-network-controller/CHANGELOG.md
index 026e3afdcd..25dba4eaa2 100644
--- a/packages/selected-network-controller/CHANGELOG.md
+++ b/packages/selected-network-controller/CHANGELOG.md
@@ -7,9 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [26.1.3]
+
### Changed
-- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765))
+- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774))
## [26.1.2]
@@ -491,7 +493,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Initial Release ([#1643](https://github.com/MetaMask/core/pull/1643))
-[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@26.1.2...HEAD
+[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@26.1.3...HEAD
+[26.1.3]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@26.1.2...@metamask/selected-network-controller@26.1.3
[26.1.2]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@26.1.1...@metamask/selected-network-controller@26.1.2
[26.1.1]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@26.1.0...@metamask/selected-network-controller@26.1.1
[26.1.0]: https://github.com/MetaMask/core/compare/@metamask/selected-network-controller@26.0.3...@metamask/selected-network-controller@26.1.0
diff --git a/packages/selected-network-controller/package.json b/packages/selected-network-controller/package.json
index dd593769b5..bb3d611928 100644
--- a/packages/selected-network-controller/package.json
+++ b/packages/selected-network-controller/package.json
@@ -1,6 +1,6 @@
{
"name": "@metamask/selected-network-controller",
- "version": "26.1.2",
+ "version": "26.1.3",
"description": "Provides an interface to the currently selected networkClientId for a given domain",
"keywords": [
"Ethereum",
@@ -56,7 +56,7 @@
"@metamask/base-controller": "^9.1.0",
"@metamask/json-rpc-engine": "^10.5.0",
"@metamask/messenger": "^1.2.0",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@metamask/permission-controller": "^13.1.1",
"@metamask/swappable-obj-proxy": "^2.3.0",
"@metamask/utils": "^11.9.0"
diff --git a/packages/shield-controller/CHANGELOG.md b/packages/shield-controller/CHANGELOG.md
index 02fd4aef6b..f54289d54e 100644
--- a/packages/shield-controller/CHANGELOG.md
+++ b/packages/shield-controller/CHANGELOG.md
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/signature-controller` from `^39.2.1` to `^39.2.2` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [5.1.2]
### Changed
diff --git a/packages/shield-controller/package.json b/packages/shield-controller/package.json
index cc3b4ca1e0..e1a3982bb4 100644
--- a/packages/shield-controller/package.json
+++ b/packages/shield-controller/package.json
@@ -54,9 +54,9 @@
},
"dependencies": {
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/messenger": "^1.2.0",
- "@metamask/signature-controller": "^39.2.1",
+ "@metamask/signature-controller": "^39.2.2",
"@metamask/transaction-controller": "^65.3.0",
"@metamask/utils": "^11.9.0",
"cockatiel": "^3.1.2"
diff --git a/packages/signature-controller/CHANGELOG.md b/packages/signature-controller/CHANGELOG.md
index 3a01f50412..5eb2afb0c2 100644
--- a/packages/signature-controller/CHANGELOG.md
+++ b/packages/signature-controller/CHANGELOG.md
@@ -7,9 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [39.2.2]
+
### Changed
-- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765))
+- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/accounts-controller` from `^38.1.0` to `^38.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/gator-permissions-controller` from `^4.1.1` to `^4.1.2` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
## [39.2.1]
@@ -759,7 +764,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Initial release ([#1214](https://github.com/MetaMask/core/pull/1214))
-[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@39.2.1...HEAD
+[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@39.2.2...HEAD
+[39.2.2]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@39.2.1...@metamask/signature-controller@39.2.2
[39.2.1]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@39.2.0...@metamask/signature-controller@39.2.1
[39.2.0]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@39.1.2...@metamask/signature-controller@39.2.0
[39.1.2]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@39.1.1...@metamask/signature-controller@39.1.2
diff --git a/packages/signature-controller/package.json b/packages/signature-controller/package.json
index 845d1cabcf..40ebaff016 100644
--- a/packages/signature-controller/package.json
+++ b/packages/signature-controller/package.json
@@ -1,6 +1,6 @@
{
"name": "@metamask/signature-controller",
- "version": "39.2.1",
+ "version": "39.2.2",
"description": "Processes signing requests in order to sign arbitrary and typed data",
"keywords": [
"Ethereum",
@@ -53,16 +53,16 @@
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
},
"dependencies": {
- "@metamask/accounts-controller": "^38.1.0",
+ "@metamask/accounts-controller": "^38.1.1",
"@metamask/approval-controller": "^9.0.1",
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/eth-sig-util": "^8.2.0",
- "@metamask/gator-permissions-controller": "^4.1.1",
+ "@metamask/gator-permissions-controller": "^4.1.2",
"@metamask/keyring-controller": "^25.5.0",
"@metamask/logging-controller": "^8.0.2",
"@metamask/messenger": "^1.2.0",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@metamask/utils": "^11.9.0",
"jsonschema": "^1.4.1",
"lodash": "^4.17.21",
diff --git a/packages/social-controllers/CHANGELOG.md b/packages/social-controllers/CHANGELOG.md
index 6a968cd8d8..136a6cb94b 100644
--- a/packages/social-controllers/CHANGELOG.md
+++ b/packages/social-controllers/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [2.2.1]
### Changed
diff --git a/packages/social-controllers/package.json b/packages/social-controllers/package.json
index 96abbbd61b..17df8bf5d8 100644
--- a/packages/social-controllers/package.json
+++ b/packages/social-controllers/package.json
@@ -55,7 +55,7 @@
"dependencies": {
"@metamask/base-controller": "^9.1.0",
"@metamask/base-data-service": "^0.1.2",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/messenger": "^1.2.0",
"@metamask/profile-sync-controller": "^28.0.2",
"@metamask/superstruct": "^3.1.0"
diff --git a/packages/subscription-controller/CHANGELOG.md b/packages/subscription-controller/CHANGELOG.md
index 2012ccbe90..603776d04c 100644
--- a/packages/subscription-controller/CHANGELOG.md
+++ b/packages/subscription-controller/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [6.1.3]
### Changed
diff --git a/packages/subscription-controller/package.json b/packages/subscription-controller/package.json
index 20723a6f50..2b4c81643d 100644
--- a/packages/subscription-controller/package.json
+++ b/packages/subscription-controller/package.json
@@ -54,7 +54,7 @@
},
"dependencies": {
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/messenger": "^1.2.0",
"@metamask/polling-controller": "^16.0.5",
"@metamask/profile-sync-controller": "^28.0.2",
diff --git a/packages/transaction-controller/CHANGELOG.md b/packages/transaction-controller/CHANGELOG.md
index 73ce879b0d..014641aba5 100644
--- a/packages/transaction-controller/CHANGELOG.md
+++ b/packages/transaction-controller/CHANGELOG.md
@@ -13,10 +13,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
-- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765))
+- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774))
- `estimateGasBatch` now falls back to the sum of per-tx `gas` values in the EIP-7702 path when node simulation fails, instead of returning the block-gas-limit fallback ([#8735](https://github.com/MetaMask/core/pull/8735))
- Real 7702 simulation is still preferred when it succeeds (the bundled call has no per-tx intrinsic gas cost so the estimate is typically tighter than summing per-tx limits).
- Required for callers that submit batches whose individual sub-calls cannot be simulated standalone, for example predict-withdraw, where the batch's first sub-call (`Safe.execTransaction`) provides source-token balance to subsequent sub-calls (approve + swap), and simulating the relay-only sub-calls in isolation reverts because the EOA has no balance until the Safe sub-call has run.
+- Bump `@metamask/accounts-controller` from `^38.1.0` to `^38.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
## [65.3.0]
diff --git a/packages/transaction-controller/package.json b/packages/transaction-controller/package.json
index dd3add2b8b..9e74edb8f4 100644
--- a/packages/transaction-controller/package.json
+++ b/packages/transaction-controller/package.json
@@ -60,15 +60,15 @@
"@ethersproject/contracts": "^5.7.0",
"@ethersproject/providers": "^5.7.0",
"@ethersproject/wallet": "^5.7.0",
- "@metamask/accounts-controller": "^38.1.0",
+ "@metamask/accounts-controller": "^38.1.1",
"@metamask/approval-controller": "^9.0.1",
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/core-backend": "^6.2.2",
"@metamask/gas-fee-controller": "^26.2.1",
"@metamask/messenger": "^1.2.0",
"@metamask/metamask-eth-abis": "^3.1.1",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@metamask/nonce-tracker": "^6.0.0",
"@metamask/remote-feature-flag-controller": "^4.2.1",
"@metamask/rpc-errors": "^7.0.2",
diff --git a/packages/transaction-pay-controller/CHANGELOG.md b/packages/transaction-pay-controller/CHANGELOG.md
index edae0d5fbb..a80cab2bd8 100644
--- a/packages/transaction-pay-controller/CHANGELOG.md
+++ b/packages/transaction-pay-controller/CHANGELOG.md
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [22.3.1]
+
+### Changed
+
+- Bump `@metamask/assets-controller` from `^7.1.0` to `^7.1.1` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/assets-controllers` from `^107.0.0` to `^108.0.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/bridge-controller` from `^72.0.3` to `^72.0.4` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/bridge-status-controller` from `^71.1.3` to `^71.1.4` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/network-controller` from `^31.1.0` to `^32.0.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
+
## [22.3.0]
### Added
@@ -856,7 +867,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Initial release ([#6820](https://github.com/MetaMask/core/pull/6820))
-[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@22.3.0...HEAD
+[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@22.3.1...HEAD
+[22.3.1]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@22.3.0...@metamask/transaction-pay-controller@22.3.1
[22.3.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@22.2.0...@metamask/transaction-pay-controller@22.3.0
[22.2.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@22.1.0...@metamask/transaction-pay-controller@22.2.0
[22.1.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@22.0.2...@metamask/transaction-pay-controller@22.1.0
diff --git a/packages/transaction-pay-controller/package.json b/packages/transaction-pay-controller/package.json
index 9e620f5e1f..066e8be7f5 100644
--- a/packages/transaction-pay-controller/package.json
+++ b/packages/transaction-pay-controller/package.json
@@ -1,6 +1,6 @@
{
"name": "@metamask/transaction-pay-controller",
- "version": "22.3.0",
+ "version": "22.3.1",
"description": "Manages alternate payment strategies to provide required funds for transactions in MetaMask",
"keywords": [
"Ethereum",
@@ -57,16 +57,16 @@
"@ethersproject/abi": "^5.7.0",
"@ethersproject/contracts": "^5.7.0",
"@ethersproject/providers": "^5.7.0",
- "@metamask/assets-controller": "^7.1.0",
- "@metamask/assets-controllers": "^107.0.0",
+ "@metamask/assets-controller": "^7.1.1",
+ "@metamask/assets-controllers": "^108.0.0",
"@metamask/base-controller": "^9.1.0",
- "@metamask/bridge-controller": "^72.0.3",
- "@metamask/bridge-status-controller": "^71.1.3",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/bridge-controller": "^72.0.4",
+ "@metamask/bridge-status-controller": "^71.1.4",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/gas-fee-controller": "^26.2.1",
"@metamask/messenger": "^1.2.0",
"@metamask/metamask-eth-abis": "^3.1.1",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@metamask/ramps-controller": "^13.3.1",
"@metamask/remote-feature-flag-controller": "^4.2.1",
"@metamask/transaction-controller": "^65.3.0",
diff --git a/packages/user-operation-controller/CHANGELOG.md b/packages/user-operation-controller/CHANGELOG.md
index caac251078..22190972c7 100644
--- a/packages/user-operation-controller/CHANGELOG.md
+++ b/packages/user-operation-controller/CHANGELOG.md
@@ -7,9 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [41.2.2]
+
### Changed
-- Bump `@metamask/network-controller` from `^31.0.0` to `^31.1.0` ([#8765](https://github.com/MetaMask/core/pull/8765))
+- Bump `@metamask/network-controller` from `^31.0.0` to `^32.0.0` ([#8765](https://github.com/MetaMask/core/pull/8765), [#8774](https://github.com/MetaMask/core/pull/8774))
+- Bump `@metamask/controller-utils` from `^12.0.0` to `^12.1.0` ([#8774](https://github.com/MetaMask/core/pull/8774))
## [41.2.1]
@@ -168,7 +171,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
-- **BREAKING:** Bump peer dependency `@metamask/transaction-controller` to `^59.0.0` ([#6171](https://github.com/MetaMask/core/pull/6171)), ([#6027](https://github.com/MetaMask/core/pull/6027))
+- **BREAKING:** Bump peer dependency `@metamask/transaction-controller` to `^59.0.0`, ([#6171](https://github.com/MetaMask/core/pull/6171), [#6027](https://github.com/MetaMask/core/pull/6027))
- Bump `@metamask/controller-utils` from `^11.10.0` to `^11.11.0` ([#6069](https://github.com/MetaMask/core/pull/6069))
- Bump `@metamask/utils` from `^11.2.0` to `^11.4.2` ([#6054](https://github.com/MetaMask/core/pull/6054))
@@ -329,8 +332,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
-- **BREAKING:** Bump `@metamask/keyring-controller` peer dependency from `^18.0.0` to `^19.0.0` ([#4195](https://github.com/MetaMask/core/pull/4956))
-- **BREAKING:** Bump `@metamask/transaction-controller` peer dependency from `^39.0.0` to `^40.0.0` ([#4195](https://github.com/MetaMask/core/pull/4956))
+- **BREAKING:** Bump `@metamask/keyring-controller` peer dependency from `^18.0.0` to `^19.0.0` ([#4195](https://github.com/MetaMask/core/pull/4195))
+- **BREAKING:** Bump `@metamask/transaction-controller` peer dependency from `^39.0.0` to `^40.0.0` ([#4195](https://github.com/MetaMask/core/pull/4195))
## [18.0.0]
@@ -362,7 +365,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- **BREAKING:** `PendingUserOperationTracker` now uses a new polling interface that accepts the generic parameter `PollingInput` ([#4752](https://github.com/MetaMask/core/pull/4752))
- **BREAKING:** The inherited `AbstractPollingController` method `startPollingByNetworkClientId` has been renamed to `startPolling` ([#4752](https://github.com/MetaMask/core/pull/4752))
- **BREAKING:** The inherited `AbstractPollingController` method `onPollingComplete` now returns the entire input object of type `PollingInput`, instead of a network client id ([#4752](https://github.com/MetaMask/core/pull/4752))
-- Bump `@metamask/transaction-controller` from `^37.1.0` to `^37.3.0` ([#4754](https://github.com/MetaMask/core/pull/4754),[#4805](https://github.com/MetaMask/core/pull/4805))
+- Bump `@metamask/transaction-controller` from `^37.1.0` to `^37.3.0` ([#4754](https://github.com/MetaMask/core/pull/4754), [#4805](https://github.com/MetaMask/core/pull/4805))
- Bump `@metamask/approval-controller` from `^7.0.4` to `^7.1.0` ([#4734](https://github.com/MetaMask/core/pull/4734))
- Bump `@metamask/keyring-controller` from `^17.2.1` to `^17.2.2` ([#4734](https://github.com/MetaMask/core/pull/4734))
- Bump `@metamask/transaction-controller` from `^37.0.0` to `^37.1.0` ([#4734](https://github.com/MetaMask/core/pull/4734))
@@ -379,7 +382,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
["Are the Types Wrong?"](https://arethetypeswrong.github.io/) tool as
["masquerading as CJS"](https://github.com/arethetypeswrong/arethetypeswrong.github.io/blob/main/docs/problems/FalseCJS.md).
All of the ATTW checks now pass.
-- Remove chunk files ([#4648](https://github.com/MetaMask/core/pull/4648)).
+- Remove chunk files. ([#4648](https://github.com/MetaMask/core/pull/4648))
- Previously, the build tool we used to generate JavaScript files extracted
common code to "chunk" files. While this was intended to make this package
more tree-shakeable, it also made debugging more difficult for our
@@ -390,8 +393,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- **BREAKING:** Bump devDependency and peerDependency `@metamask/network-controller` from `^20.0.0` to `^21.0.0` ([#4618](https://github.com/MetaMask/core/pull/4618), [#4651](https://github.com/MetaMask/core/pull/4651))
-- **BREAKING:** Bump devDependency and peerDependency `@metamask/transaction-controller` from `^35.0.0` to `^36.0.0` ( [#4651](https://github.com/MetaMask/core/pull/4651))
-- **BREAKING:** Bump devDependency and peerDependency `@metamask/gas-fee-controller` from `^19.0.0` to `^20.0.0` ( [#4651](https://github.com/MetaMask/core/pull/4651))
+- **BREAKING:** Bump devDependency and peerDependency `@metamask/transaction-controller` from `^35.0.0` to `^36.0.0` ([#4651](https://github.com/MetaMask/core/pull/4651))
+- **BREAKING:** Bump devDependency and peerDependency `@metamask/gas-fee-controller` from `^19.0.0` to `^20.0.0` ([#4651](https://github.com/MetaMask/core/pull/4651))
- Bump `@metamask/base-controller` from `^6.0.2` to `^7.0.0` ([#4625](https://github.com/MetaMask/core/pull/4625), [#4643](https://github.com/MetaMask/core/pull/4643))
- Bump `@metamask/controller-utils` from `^11.0.2` to `^11.2.0` ([#4639](https://github.com/MetaMask/core/pull/4639), [#4651](https://github.com/MetaMask/core/pull/4651))
- Bump `@metamask/polling-controller` from `^9.0.1` to `^10.0.0` ([#4651](https://github.com/MetaMask/core/pull/4651))
@@ -593,7 +596,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Initial Release ([#3749](https://github.com/MetaMask/core/pull/3749))
-[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/user-operation-controller@41.2.1...HEAD
+[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/user-operation-controller@41.2.2...HEAD
+[41.2.2]: https://github.com/MetaMask/core/compare/@metamask/user-operation-controller@41.2.1...@metamask/user-operation-controller@41.2.2
[41.2.1]: https://github.com/MetaMask/core/compare/@metamask/user-operation-controller@41.2.0...@metamask/user-operation-controller@41.2.1
[41.2.0]: https://github.com/MetaMask/core/compare/@metamask/user-operation-controller@41.1.1...@metamask/user-operation-controller@41.2.0
[41.1.1]: https://github.com/MetaMask/core/compare/@metamask/user-operation-controller@41.1.0...@metamask/user-operation-controller@41.1.1
diff --git a/packages/user-operation-controller/package.json b/packages/user-operation-controller/package.json
index 96428743b7..2a94ed5d9f 100644
--- a/packages/user-operation-controller/package.json
+++ b/packages/user-operation-controller/package.json
@@ -1,6 +1,6 @@
{
"name": "@metamask/user-operation-controller",
- "version": "41.2.1",
+ "version": "41.2.2",
"description": "Creates user operations and manages their life cycle",
"keywords": [
"Ethereum",
@@ -56,12 +56,12 @@
"dependencies": {
"@metamask/approval-controller": "^9.0.1",
"@metamask/base-controller": "^9.1.0",
- "@metamask/controller-utils": "^12.0.0",
+ "@metamask/controller-utils": "^12.1.0",
"@metamask/eth-query": "^4.0.0",
"@metamask/gas-fee-controller": "^26.2.1",
"@metamask/keyring-controller": "^25.5.0",
"@metamask/messenger": "^1.2.0",
- "@metamask/network-controller": "^31.1.0",
+ "@metamask/network-controller": "^32.0.0",
"@metamask/polling-controller": "^16.0.5",
"@metamask/rpc-errors": "^7.0.2",
"@metamask/superstruct": "^3.1.0",
diff --git a/yarn.lock b/yarn.lock
index 44e996f678..5cbd27294f 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2535,7 +2535,7 @@ __metadata:
resolution: "@metamask/account-tree-controller@workspace:packages/account-tree-controller"
dependencies:
"@metamask/account-api": "npm:^1.0.4"
- "@metamask/accounts-controller": "npm:^38.1.0"
+ "@metamask/accounts-controller": "npm:^38.1.1"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
"@metamask/keyring-api": "npm:^23.1.0"
@@ -2567,14 +2567,14 @@ __metadata:
languageName: unknown
linkType: soft
-"@metamask/accounts-controller@npm:^38.1.0, @metamask/accounts-controller@workspace:packages/accounts-controller":
+"@metamask/accounts-controller@npm:^38.1.1, @metamask/accounts-controller@workspace:packages/accounts-controller":
version: 0.0.0-use.local
resolution: "@metamask/accounts-controller@workspace:packages/accounts-controller"
dependencies:
"@ethereumjs/util": "npm:^9.1.0"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/eth-snap-keyring": "npm:^22.0.1"
"@metamask/keyring-api": "npm:^23.1.0"
"@metamask/keyring-controller": "npm:^25.5.0"
@@ -2582,7 +2582,7 @@ __metadata:
"@metamask/keyring-sdk": "npm:^2.1.1"
"@metamask/keyring-utils": "npm:^3.2.1"
"@metamask/messenger": "npm:^1.2.0"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/providers": "npm:^22.1.0"
"@metamask/superstruct": "npm:^3.1.0"
"@metamask/utils": "npm:^11.9.0"
@@ -2624,7 +2624,7 @@ __metadata:
dependencies:
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/messenger": "npm:^1.2.0"
"@metamask/utils": "npm:^11.9.0"
"@ts-bridge/cli": "npm:^0.6.4"
@@ -2686,7 +2686,7 @@ __metadata:
dependencies:
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/messenger": "npm:^1.2.0"
"@metamask/utils": "npm:^11.9.0"
"@ts-bridge/cli": "npm:^0.6.4"
@@ -2768,7 +2768,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@metamask/assets-controller@npm:^7.1.0, @metamask/assets-controller@workspace:packages/assets-controller":
+"@metamask/assets-controller@npm:^7.1.1, @metamask/assets-controller@workspace:packages/assets-controller":
version: 0.0.0-use.local
resolution: "@metamask/assets-controller@workspace:packages/assets-controller"
dependencies:
@@ -2776,19 +2776,19 @@ __metadata:
"@ethersproject/abi": "npm:^5.7.0"
"@ethersproject/providers": "npm:^5.7.0"
"@metamask/account-tree-controller": "npm:^7.3.0"
- "@metamask/accounts-controller": "npm:^38.1.0"
- "@metamask/assets-controllers": "npm:^107.0.0"
+ "@metamask/accounts-controller": "npm:^38.1.1"
+ "@metamask/assets-controllers": "npm:^108.0.0"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
"@metamask/client-controller": "npm:^1.0.1"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/core-backend": "npm:^6.2.2"
"@metamask/keyring-api": "npm:^23.1.0"
"@metamask/keyring-controller": "npm:^25.5.0"
"@metamask/keyring-internal-api": "npm:^11.0.1"
"@metamask/keyring-snap-client": "npm:^9.0.2"
"@metamask/messenger": "npm:^1.2.0"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/network-enablement-controller": "npm:^5.1.1"
"@metamask/permission-controller": "npm:^13.1.1"
"@metamask/phishing-controller": "npm:^17.1.2"
@@ -2815,7 +2815,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@metamask/assets-controllers@npm:^107.0.0, @metamask/assets-controllers@workspace:packages/assets-controllers":
+"@metamask/assets-controllers@npm:^108.0.0, @metamask/assets-controllers@workspace:packages/assets-controllers":
version: 0.0.0-use.local
resolution: "@metamask/assets-controllers@workspace:packages/assets-controllers"
dependencies:
@@ -2829,12 +2829,12 @@ __metadata:
"@metamask/abi-utils": "npm:^2.0.3"
"@metamask/account-api": "npm:^1.0.4"
"@metamask/account-tree-controller": "npm:^7.3.0"
- "@metamask/accounts-controller": "npm:^38.1.0"
+ "@metamask/accounts-controller": "npm:^38.1.1"
"@metamask/approval-controller": "npm:^9.0.1"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
"@metamask/contract-metadata": "npm:^2.4.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/core-backend": "npm:^6.2.2"
"@metamask/eth-query": "npm:^4.0.0"
"@metamask/ethjs-provider-http": "npm:^0.3.0"
@@ -2845,7 +2845,7 @@ __metadata:
"@metamask/messenger": "npm:^1.2.0"
"@metamask/metamask-eth-abis": "npm:^3.1.1"
"@metamask/multichain-account-service": "npm:^9.0.0"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/network-enablement-controller": "npm:^5.1.1"
"@metamask/permission-controller": "npm:^13.1.1"
"@metamask/phishing-controller": "npm:^17.1.2"
@@ -2932,7 +2932,7 @@ __metadata:
dependencies:
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-data-service": "npm:^0.1.2"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/messenger": "npm:^1.2.0"
"@metamask/superstruct": "npm:^3.1.0"
"@metamask/utils": "npm:^11.9.0"
@@ -2997,7 +2997,7 @@ __metadata:
resolution: "@metamask/base-data-service@workspace:packages/base-data-service"
dependencies:
"@metamask/auto-changelog": "npm:^6.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/messenger": "npm:^1.2.0"
"@metamask/utils": "npm:^11.9.0"
"@tanstack/query-core": "npm:^4.43.0"
@@ -3015,7 +3015,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@metamask/bridge-controller@npm:^72.0.3, @metamask/bridge-controller@workspace:packages/bridge-controller":
+"@metamask/bridge-controller@npm:^72.0.4, @metamask/bridge-controller@workspace:packages/bridge-controller":
version: 0.0.0-use.local
resolution: "@metamask/bridge-controller@workspace:packages/bridge-controller"
dependencies:
@@ -3024,19 +3024,19 @@ __metadata:
"@ethersproject/constants": "npm:^5.7.0"
"@ethersproject/contracts": "npm:^5.7.0"
"@ethersproject/providers": "npm:^5.7.0"
- "@metamask/accounts-controller": "npm:^38.1.0"
- "@metamask/assets-controller": "npm:^7.1.0"
- "@metamask/assets-controllers": "npm:^107.0.0"
+ "@metamask/accounts-controller": "npm:^38.1.1"
+ "@metamask/assets-controller": "npm:^7.1.1"
+ "@metamask/assets-controllers": "npm:^108.0.0"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/eth-json-rpc-provider": "npm:^6.0.1"
"@metamask/gas-fee-controller": "npm:^26.2.1"
"@metamask/keyring-api": "npm:^23.1.0"
"@metamask/messenger": "npm:^1.2.0"
"@metamask/metamask-eth-abis": "npm:^3.1.1"
"@metamask/multichain-network-controller": "npm:^3.1.1"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/polling-controller": "npm:^16.0.5"
"@metamask/profile-sync-controller": "npm:^28.0.2"
"@metamask/remote-feature-flag-controller": "npm:^4.2.1"
@@ -3062,19 +3062,19 @@ __metadata:
languageName: unknown
linkType: soft
-"@metamask/bridge-status-controller@npm:^71.1.3, @metamask/bridge-status-controller@workspace:packages/bridge-status-controller":
+"@metamask/bridge-status-controller@npm:^71.1.4, @metamask/bridge-status-controller@workspace:packages/bridge-status-controller":
version: 0.0.0-use.local
resolution: "@metamask/bridge-status-controller@workspace:packages/bridge-status-controller"
dependencies:
- "@metamask/accounts-controller": "npm:^38.1.0"
+ "@metamask/accounts-controller": "npm:^38.1.1"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/bridge-controller": "npm:^72.0.3"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/bridge-controller": "npm:^72.0.4"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/gas-fee-controller": "npm:^26.2.1"
"@metamask/keyring-controller": "npm:^25.5.0"
"@metamask/messenger": "npm:^1.2.0"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/polling-controller": "npm:^16.0.5"
"@metamask/profile-sync-controller": "npm:^28.0.2"
"@metamask/snaps-controllers": "npm:^19.0.0"
@@ -3131,7 +3131,7 @@ __metadata:
dependencies:
"@metamask/api-specs": "npm:^0.14.0"
"@metamask/auto-changelog": "npm:^6.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/keyring-internal-api": "npm:^11.0.1"
"@metamask/permission-controller": "npm:^13.1.1"
"@metamask/rpc-errors": "npm:^7.0.2"
@@ -3154,7 +3154,7 @@ __metadata:
dependencies:
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-data-service": "npm:^0.1.2"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/messenger": "npm:^1.2.0"
"@metamask/superstruct": "npm:^3.1.0"
"@metamask/utils": "npm:^11.9.0"
@@ -3177,7 +3177,7 @@ __metadata:
dependencies:
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/keyring-controller": "npm:^25.5.0"
"@metamask/messenger": "npm:^1.2.0"
"@metamask/profile-sync-controller": "npm:^28.0.2"
@@ -3220,7 +3220,7 @@ __metadata:
dependencies:
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/messenger": "npm:^1.2.0"
"@metamask/superstruct": "npm:^3.1.0"
"@metamask/utils": "npm:^11.9.0"
@@ -3265,7 +3265,7 @@ __metadata:
"@lavamoat/allow-scripts": "npm:^3.0.4"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/keyring-controller": "npm:^25.5.0"
"@metamask/messenger": "npm:^1.2.0"
"@metamask/polling-controller": "npm:^16.0.5"
@@ -3335,7 +3335,7 @@ __metadata:
languageName: node
linkType: hard
-"@metamask/controller-utils@npm:^12.0.0, @metamask/controller-utils@workspace:packages/controller-utils":
+"@metamask/controller-utils@npm:^12.1.0, @metamask/controller-utils@workspace:packages/controller-utils":
version: 0.0.0-use.local
resolution: "@metamask/controller-utils@workspace:packages/controller-utils"
dependencies:
@@ -3372,9 +3372,9 @@ __metadata:
version: 0.0.0-use.local
resolution: "@metamask/core-backend@workspace:packages/core-backend"
dependencies:
- "@metamask/accounts-controller": "npm:^38.1.0"
+ "@metamask/accounts-controller": "npm:^38.1.1"
"@metamask/auto-changelog": "npm:^6.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/keyring-controller": "npm:^25.5.0"
"@metamask/messenger": "npm:^1.2.0"
"@metamask/profile-sync-controller": "npm:^28.0.2"
@@ -3408,7 +3408,7 @@ __metadata:
"@metamask/eth-block-tracker": "npm:^15.0.1"
"@metamask/eth-json-rpc-provider": "npm:^6.0.1"
"@metamask/json-rpc-engine": "npm:^10.5.0"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/utils": "npm:^11.9.0"
"@ts-bridge/cli": "npm:^0.6.4"
"@types/jest": "npm:^29.5.14"
@@ -3528,10 +3528,10 @@ __metadata:
"@metamask/account-tree-controller": "npm:^7.3.0"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/keyring-api": "npm:^23.1.0"
"@metamask/messenger": "npm:^1.2.0"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/stake-sdk": "npm:^3.2.1"
"@metamask/transaction-controller": "npm:^65.3.0"
"@ts-bridge/cli": "npm:^0.6.4"
@@ -3577,7 +3577,7 @@ __metadata:
resolution: "@metamask/eip-7702-internal-rpc-middleware@workspace:packages/eip-7702-internal-rpc-middleware"
dependencies:
"@metamask/auto-changelog": "npm:^6.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/rpc-errors": "npm:^7.0.2"
"@metamask/superstruct": "npm:^3.1.0"
"@metamask/utils": "npm:^11.9.0"
@@ -3598,7 +3598,7 @@ __metadata:
dependencies:
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/chain-agnostic-permission": "npm:^1.6.1"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/json-rpc-engine": "npm:^10.5.0"
"@metamask/permission-controller": "npm:^13.1.1"
"@metamask/rpc-errors": "npm:^7.0.2"
@@ -3622,9 +3622,9 @@ __metadata:
"@ethersproject/providers": "npm:^5.7.0"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/messenger": "npm:^1.2.0"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/utils": "npm:^11.9.0"
"@ts-bridge/cli": "npm:^0.6.4"
"@types/jest": "npm:^29.5.14"
@@ -3778,7 +3778,7 @@ __metadata:
"@metamask/eth-sig-util": "npm:^8.2.0"
"@metamask/json-rpc-engine": "npm:^10.5.0"
"@metamask/message-manager": "npm:^14.1.2"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/rpc-errors": "npm:^7.0.2"
"@metamask/superstruct": "npm:^3.1.0"
"@metamask/utils": "npm:^11.9.0"
@@ -4093,11 +4093,11 @@ __metadata:
"@babel/runtime": "npm:^7.23.9"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/eth-query": "npm:^4.0.0"
"@metamask/ethjs-unit": "npm:^0.3.0"
"@metamask/messenger": "npm:^1.2.0"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/polling-controller": "npm:^16.0.5"
"@metamask/utils": "npm:^11.9.0"
"@ts-bridge/cli": "npm:^0.6.4"
@@ -4121,7 +4121,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@metamask/gator-permissions-controller@npm:^4.1.1, @metamask/gator-permissions-controller@workspace:packages/gator-permissions-controller":
+"@metamask/gator-permissions-controller@npm:^4.1.2, @metamask/gator-permissions-controller@workspace:packages/gator-permissions-controller":
version: 0.0.0-use.local
resolution: "@metamask/gator-permissions-controller@workspace:packages/gator-permissions-controller"
dependencies:
@@ -4134,7 +4134,7 @@ __metadata:
"@metamask/delegation-core": "npm:^2.0.0"
"@metamask/delegation-deployments": "npm:^1.3.0"
"@metamask/messenger": "npm:^1.2.0"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/snaps-controllers": "npm:^19.0.0"
"@metamask/snaps-sdk": "npm:^11.0.0"
"@metamask/snaps-utils": "npm:^12.1.2"
@@ -4158,7 +4158,7 @@ __metadata:
dependencies:
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/messenger": "npm:^1.2.0"
"@ts-bridge/cli": "npm:^0.6.4"
"@types/jest": "npm:^29.5.14"
@@ -4378,7 +4378,7 @@ __metadata:
dependencies:
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/messenger": "npm:^1.2.0"
"@ts-bridge/cli": "npm:^0.6.4"
"@types/jest": "npm:^29.5.14"
@@ -4399,7 +4399,7 @@ __metadata:
dependencies:
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/eth-sig-util": "npm:^8.2.0"
"@metamask/messenger": "npm:^1.2.0"
"@metamask/utils": "npm:^11.9.0"
@@ -4490,10 +4490,10 @@ __metadata:
"@ethersproject/providers": "npm:^5.7.0"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-data-service": "npm:^0.1.2"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/messenger": "npm:^1.2.0"
"@metamask/metamask-eth-abis": "npm:^3.1.1"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/remote-feature-flag-controller": "npm:^4.2.1"
"@metamask/superstruct": "npm:^3.1.0"
"@metamask/utils": "npm:^11.9.0"
@@ -4514,7 +4514,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@metamask/money-account-controller@workspace:packages/money-account-controller"
dependencies:
- "@metamask/accounts-controller": "npm:^38.1.0"
+ "@metamask/accounts-controller": "npm:^38.1.1"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
"@metamask/eth-money-keyring": "npm:^2.0.4"
@@ -4549,7 +4549,7 @@ __metadata:
"@metamask/delegation-deployments": "npm:^1.3.0"
"@metamask/keyring-controller": "npm:^25.5.0"
"@metamask/messenger": "npm:^1.2.0"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/utils": "npm:^11.9.0"
"@ts-bridge/cli": "npm:^0.6.4"
"@types/jest": "npm:^29.5.14"
@@ -4570,10 +4570,10 @@ __metadata:
dependencies:
"@ethereumjs/util": "npm:^9.1.0"
"@metamask/account-api": "npm:^1.0.4"
- "@metamask/accounts-controller": "npm:^38.1.0"
+ "@metamask/accounts-controller": "npm:^38.1.1"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/eth-hd-keyring": "npm:^14.1.1"
"@metamask/eth-snap-keyring": "npm:^22.0.1"
"@metamask/key-tree": "npm:^10.1.1"
@@ -4615,15 +4615,15 @@ __metadata:
version: 0.0.0-use.local
resolution: "@metamask/multichain-api-middleware@workspace:packages/multichain-api-middleware"
dependencies:
- "@metamask/accounts-controller": "npm:^38.1.0"
+ "@metamask/accounts-controller": "npm:^38.1.1"
"@metamask/api-specs": "npm:^0.14.0"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/chain-agnostic-permission": "npm:^1.6.1"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/eth-json-rpc-filters": "npm:^9.0.0"
"@metamask/json-rpc-engine": "npm:^10.5.0"
"@metamask/multichain-transactions-controller": "npm:^7.1.0"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/permission-controller": "npm:^13.1.1"
"@metamask/rpc-errors": "npm:^7.0.2"
"@metamask/safe-event-emitter": "npm:^3.0.0"
@@ -4647,15 +4647,15 @@ __metadata:
version: 0.0.0-use.local
resolution: "@metamask/multichain-network-controller@workspace:packages/multichain-network-controller"
dependencies:
- "@metamask/accounts-controller": "npm:^38.1.0"
+ "@metamask/accounts-controller": "npm:^38.1.1"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/keyring-api": "npm:^23.1.0"
"@metamask/keyring-controller": "npm:^25.5.0"
"@metamask/keyring-internal-api": "npm:^11.0.1"
"@metamask/messenger": "npm:^1.2.0"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/superstruct": "npm:^3.1.0"
"@metamask/utils": "npm:^11.9.0"
"@solana/addresses": "npm:^2.0.0"
@@ -4680,7 +4680,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@metamask/multichain-transactions-controller@workspace:packages/multichain-transactions-controller"
dependencies:
- "@metamask/accounts-controller": "npm:^38.1.0"
+ "@metamask/accounts-controller": "npm:^38.1.1"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
"@metamask/keyring-api": "npm:^23.1.0"
@@ -4714,7 +4714,7 @@ __metadata:
dependencies:
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/messenger": "npm:^1.2.0"
"@metamask/utils": "npm:^11.9.0"
"@ts-bridge/cli": "npm:^0.6.4"
@@ -4730,7 +4730,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@metamask/network-controller@npm:^31.1.0, @metamask/network-controller@workspace:packages/network-controller":
+"@metamask/network-controller@npm:^32.0.0, @metamask/network-controller@workspace:packages/network-controller":
version: 0.0.0-use.local
resolution: "@metamask/network-controller@workspace:packages/network-controller"
dependencies:
@@ -4738,7 +4738,7 @@ __metadata:
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
"@metamask/connectivity-controller": "npm:^0.2.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/eth-block-tracker": "npm:^15.0.1"
"@metamask/eth-json-rpc-infura": "npm:^10.3.0"
"@metamask/eth-json-rpc-middleware": "npm:^23.1.3"
@@ -4785,11 +4785,11 @@ __metadata:
dependencies:
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/keyring-api": "npm:^23.1.0"
"@metamask/messenger": "npm:^1.2.0"
"@metamask/multichain-network-controller": "npm:^3.1.1"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/slip44": "npm:^4.3.0"
"@metamask/transaction-controller": "npm:^65.3.0"
"@metamask/utils": "npm:^11.9.0"
@@ -4827,7 +4827,7 @@ __metadata:
"@lavamoat/preinstall-always-fail": "npm:^2.1.0"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/keyring-controller": "npm:^25.5.0"
"@metamask/messenger": "npm:^1.2.0"
"@metamask/profile-sync-controller": "npm:^28.0.2"
@@ -4926,7 +4926,7 @@ __metadata:
"@metamask/approval-controller": "npm:^9.0.1"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/json-rpc-engine": "npm:^10.5.0"
"@metamask/messenger": "npm:^1.2.0"
"@metamask/rpc-errors": "npm:^7.0.2"
@@ -4979,12 +4979,12 @@ __metadata:
"@metamask/account-tree-controller": "npm:^7.3.0"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/geolocation-controller": "npm:^0.1.3"
"@metamask/keyring-controller": "npm:^25.5.0"
"@metamask/keyring-internal-api": "npm:^11.0.1"
"@metamask/messenger": "npm:^1.2.0"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/profile-sync-controller": "npm:^28.0.2"
"@metamask/remote-feature-flag-controller": "npm:^4.2.1"
"@metamask/transaction-controller": "npm:^65.3.0"
@@ -5016,7 +5016,7 @@ __metadata:
dependencies:
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/messenger": "npm:^1.2.0"
"@metamask/transaction-controller": "npm:^65.3.0"
"@noble/hashes": "npm:^1.8.0"
@@ -5043,9 +5043,9 @@ __metadata:
dependencies:
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/messenger": "npm:^1.2.0"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/utils": "npm:^11.9.0"
"@ts-bridge/cli": "npm:^0.6.4"
"@types/jest": "npm:^29.5.14"
@@ -5095,10 +5095,10 @@ __metadata:
version: 0.0.0-use.local
resolution: "@metamask/profile-metrics-controller@workspace:packages/profile-metrics-controller"
dependencies:
- "@metamask/accounts-controller": "npm:^38.1.0"
+ "@metamask/accounts-controller": "npm:^38.1.1"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/keyring-controller": "npm:^25.5.0"
"@metamask/keyring-internal-api": "npm:^11.0.1"
"@metamask/messenger": "npm:^1.2.0"
@@ -5189,7 +5189,7 @@ __metadata:
dependencies:
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/messenger": "npm:^1.2.0"
"@ts-bridge/cli": "npm:^0.6.4"
"@types/jest": "npm:^29.5.14"
@@ -5255,7 +5255,7 @@ __metadata:
"@lavamoat/allow-scripts": "npm:^3.0.4"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/messenger": "npm:^1.2.0"
"@metamask/utils": "npm:^11.9.0"
"@ts-bridge/cli": "npm:^0.6.4"
@@ -5296,9 +5296,9 @@ __metadata:
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
"@metamask/base-data-service": "npm:^0.1.2"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/messenger": "npm:^1.2.0"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/superstruct": "npm:^3.1.0"
"@metamask/utils": "npm:^11.9.0"
"@tanstack/query-core": "npm:^4.43.0"
@@ -5367,7 +5367,7 @@ __metadata:
"@metamask/base-controller": "npm:^9.1.0"
"@metamask/json-rpc-engine": "npm:^10.5.0"
"@metamask/messenger": "npm:^1.2.0"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/permission-controller": "npm:^13.1.1"
"@metamask/swappable-obj-proxy": "npm:^2.3.0"
"@metamask/utils": "npm:^11.9.0"
@@ -5396,9 +5396,9 @@ __metadata:
"@lavamoat/preinstall-always-fail": "npm:^2.1.0"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/messenger": "npm:^1.2.0"
- "@metamask/signature-controller": "npm:^39.2.1"
+ "@metamask/signature-controller": "npm:^39.2.2"
"@metamask/transaction-controller": "npm:^65.3.0"
"@metamask/utils": "npm:^11.9.0"
"@ts-bridge/cli": "npm:^0.6.4"
@@ -5416,21 +5416,21 @@ __metadata:
languageName: unknown
linkType: soft
-"@metamask/signature-controller@npm:^39.2.1, @metamask/signature-controller@workspace:packages/signature-controller":
+"@metamask/signature-controller@npm:^39.2.2, @metamask/signature-controller@workspace:packages/signature-controller":
version: 0.0.0-use.local
resolution: "@metamask/signature-controller@workspace:packages/signature-controller"
dependencies:
- "@metamask/accounts-controller": "npm:^38.1.0"
+ "@metamask/accounts-controller": "npm:^38.1.1"
"@metamask/approval-controller": "npm:^9.0.1"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/eth-sig-util": "npm:^8.2.0"
- "@metamask/gator-permissions-controller": "npm:^4.1.1"
+ "@metamask/gator-permissions-controller": "npm:^4.1.2"
"@metamask/keyring-controller": "npm:^25.5.0"
"@metamask/logging-controller": "npm:^8.0.2"
"@metamask/messenger": "npm:^1.2.0"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/utils": "npm:^11.9.0"
"@ts-bridge/cli": "npm:^0.6.4"
"@types/jest": "npm:^29.5.14"
@@ -5605,7 +5605,7 @@ __metadata:
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
"@metamask/base-data-service": "npm:^0.1.2"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/messenger": "npm:^1.2.0"
"@metamask/profile-sync-controller": "npm:^28.0.2"
"@metamask/superstruct": "npm:^3.1.0"
@@ -5653,7 +5653,7 @@ __metadata:
dependencies:
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/messenger": "npm:^1.2.0"
"@metamask/polling-controller": "npm:^16.0.5"
"@metamask/profile-sync-controller": "npm:^28.0.2"
@@ -5716,12 +5716,12 @@ __metadata:
"@ethersproject/contracts": "npm:^5.7.0"
"@ethersproject/providers": "npm:^5.7.0"
"@ethersproject/wallet": "npm:^5.7.0"
- "@metamask/accounts-controller": "npm:^38.1.0"
+ "@metamask/accounts-controller": "npm:^38.1.1"
"@metamask/approval-controller": "npm:^9.0.1"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
"@metamask/connectivity-controller": "npm:^0.2.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/core-backend": "npm:^6.2.2"
"@metamask/eth-block-tracker": "npm:^15.0.0"
"@metamask/eth-json-rpc-provider": "npm:^6.0.1"
@@ -5729,7 +5729,7 @@ __metadata:
"@metamask/gas-fee-controller": "npm:^26.2.1"
"@metamask/messenger": "npm:^1.2.0"
"@metamask/metamask-eth-abis": "npm:^3.1.1"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/nonce-tracker": "npm:^6.0.0"
"@metamask/remote-feature-flag-controller": "npm:^4.2.1"
"@metamask/rpc-errors": "npm:^7.0.2"
@@ -5768,17 +5768,17 @@ __metadata:
"@ethersproject/abi": "npm:^5.7.0"
"@ethersproject/contracts": "npm:^5.7.0"
"@ethersproject/providers": "npm:^5.7.0"
- "@metamask/assets-controller": "npm:^7.1.0"
- "@metamask/assets-controllers": "npm:^107.0.0"
+ "@metamask/assets-controller": "npm:^7.1.1"
+ "@metamask/assets-controllers": "npm:^108.0.0"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/bridge-controller": "npm:^72.0.3"
- "@metamask/bridge-status-controller": "npm:^71.1.3"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/bridge-controller": "npm:^72.0.4"
+ "@metamask/bridge-status-controller": "npm:^71.1.4"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/gas-fee-controller": "npm:^26.2.1"
"@metamask/messenger": "npm:^1.2.0"
"@metamask/metamask-eth-abis": "npm:^3.1.1"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/ramps-controller": "npm:^13.3.1"
"@metamask/remote-feature-flag-controller": "npm:^4.2.1"
"@metamask/transaction-controller": "npm:^65.3.0"
@@ -5806,13 +5806,13 @@ __metadata:
"@metamask/approval-controller": "npm:^9.0.1"
"@metamask/auto-changelog": "npm:^6.1.0"
"@metamask/base-controller": "npm:^9.1.0"
- "@metamask/controller-utils": "npm:^12.0.0"
+ "@metamask/controller-utils": "npm:^12.1.0"
"@metamask/eth-block-tracker": "npm:^15.0.0"
"@metamask/eth-query": "npm:^4.0.0"
"@metamask/gas-fee-controller": "npm:^26.2.1"
"@metamask/keyring-controller": "npm:^25.5.0"
"@metamask/messenger": "npm:^1.2.0"
- "@metamask/network-controller": "npm:^31.1.0"
+ "@metamask/network-controller": "npm:^32.0.0"
"@metamask/polling-controller": "npm:^16.0.5"
"@metamask/rpc-errors": "npm:^7.0.2"
"@metamask/superstruct": "npm:^3.1.0"
From d1262235cd8250c00e8ced456d8f3807fd241ab2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=96mer=20G=C3=B6ktu=C4=9F=20Poyraz?=
Date: Tue, 12 May 2026 17:12:15 +0200
Subject: [PATCH 2/3] feat: Derive fiat order sourceAmount from on-chain tx
data and persist fiat order metadata (#8694)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
## Explanation
### 1. Derive fiat order `sourceAmount` from on-chain tx data
Currently, the fiat submit flow derives `sourceAmountRaw` from
`order.cryptoAmount` - a human-readable value reported by the on-ramp
provider. This value may not precisely reflect what was actually
received on-chain.
This PR reads the actual transferred amount from the completed on-chain
transaction (`order.txHash`) instead. For native tokens, the amount is
taken from `tx.value`. For ERC-20 tokens, the amount is decoded from the
`transfer(address,uint256)` call data. If the on-chain read fails or the
transaction hash is missing, the existing `order.cryptoAmount`
derivation is used as a fallback.
The implementation introduces:
- **`getTransferredAmountFromTxHash`** - a generic utility in
`utils/transaction-receipt.ts` that reads transferred amounts from any
on-chain transaction (native or ERC-20). Takes explicit `chainId` and
`tokenAddress` params for reusability.
- **`resolveSourceAmountRaw`** - a fiat-strategy-specific function in
`strategy/fiat/utils.ts` that orchestrates the on-chain read with
`order.cryptoAmount` fallback.
- **`getRawSourceAmountFromOrderCryptoAmount`** - the existing
decimal-shift conversion, moved from `fiat-submit.ts` to
`strategy/fiat/utils.ts` and renamed for clarity.
### 2. Persist fiat order metadata on `metamaskPay`
The `TransactionPayController` state is cleaned up when a transaction is
finalized (confirmed/failed/dropped). This means `fiatPayment.orderId`
and the provider info are gone by the time the user opens the
activity/transaction-details view.
To enable the mobile activity view to show a fiat order status row (and
query `RampsController:getOrder` for live status), this PR persists the
fiat order ID and provider code on `transaction.metamaskPay` **before**
polling begins in `submitFiatQuotes`.
Changes:
- **`MetamaskPayMetadata`** (`transaction-controller/types.ts`) — Added
`fiatOrderId?: string` and `fiatProvider?: string` fields.
- **`submitFiatQuotes`** (`fiat-submit.ts`) — Calls `updateTransaction`
to persist `fiatOrderId` and `fiatProvider` on `tx.metamaskPay` before
`waitForOrderCompletion` starts polling. This ensures data is available
even while the order is still in-flight.
- **Tests** — Two new tests verify metadata persistence and that
existing `metamaskPay` fields are preserved.
## References
- Related to the fiat strategy submit flow introduced in #8347
## Checklist
- [x] I've updated the test suite for new or updated code as appropriate
- [x] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [x] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/processes/updating-changelogs.md)
- [ ] I've introduced [breaking
changes](https://github.com/MetaMask/core/tree/main/docs/processes/breaking-changes.md)
in this PR and have prepared draft pull requests for clients and
consumer packages to resolve them
---
> [!NOTE]
> **Medium Risk**
> Updates fiat on-ramp submission to depend on on-chain receipt/trace
parsing and persists new metadata onto `TransactionMeta`, which could
affect payment execution and activity display if RPC methods/log parsing
behave unexpectedly across networks.
>
> **Overview**
> Fiat on-ramp submit flow now **persists order identifiers** onto
`transaction.metamaskPay.fiat` (order ID + provider code) before
polling, so downstream activity views can query order status even after
controller state cleanup.
>
> The relay leg’s `sourceAmountRaw` is now **derived from the actual
on-chain transfer** referenced by `order.txHash` via new utilities that
parse ERC-20 `Transfer` logs or native transfers (using
`debug_traceTransaction` with a `tx.value` fallback), falling back to
`order.cryptoAmount` conversion when on-chain reads are unavailable.
>
> Adds `MetamaskPayMetadata.fiat` to the transaction-controller types
and updates/extends unit tests around fiat submission, amount
resolution, and receipt/trace parsing.
>
> Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
46177a2b673c3b73e7e4256b3acc27638d699012. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).
---
packages/transaction-controller/CHANGELOG.md | 1 +
packages/transaction-controller/src/types.ts | 8 +
.../transaction-pay-controller/CHANGELOG.md | 5 +
.../src/strategy/fiat/fiat-submit.test.ts | 101 +++-
.../src/strategy/fiat/fiat-submit.ts | 72 +--
.../src/strategy/fiat/utils.test.ts | 255 +++++++++-
.../src/strategy/fiat/utils.ts | 112 +++++
.../src/utils/transaction.test.ts | 435 ++++++++++++++++++
.../src/utils/transaction.ts | 208 +++++++++
9 files changed, 1120 insertions(+), 77 deletions(-)
diff --git a/packages/transaction-controller/CHANGELOG.md b/packages/transaction-controller/CHANGELOG.md
index 014641aba5..265b87eb90 100644
--- a/packages/transaction-controller/CHANGELOG.md
+++ b/packages/transaction-controller/CHANGELOG.md
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
+- Add optional `fiat` object (with `orderId` and `provider` properties) to `MetamaskPayMetadata` type for persisting fiat on-ramp order data on transactions ([#8694](https://github.com/MetaMask/core/pull/8694))
- Add `predictAcrossWithdraw` to the `TransactionType` enum ([#8759](https://github.com/MetaMask/core/pull/8759))
### Changed
diff --git a/packages/transaction-controller/src/types.ts b/packages/transaction-controller/src/types.ts
index 541dd360d1..6ec3b783f3 100644
--- a/packages/transaction-controller/src/types.ts
+++ b/packages/transaction-controller/src/types.ts
@@ -2170,6 +2170,14 @@ export type MetamaskPayMetadata = {
/** Chain ID of the payment token. */
chainId?: Hex;
+ /** Fiat on-ramp metadata (order ID and provider). */
+ fiat?: {
+ /** Order ID (normalized format: /providers/{provider}/orders/{id}). */
+ orderId: string;
+ /** Provider code (e.g. "transak-native"). */
+ provider: string;
+ };
+
/**
* Whether this is a post-quote transaction (e.g., withdrawal flow).
* When true, the token represents the destination rather than source.
diff --git a/packages/transaction-pay-controller/CHANGELOG.md b/packages/transaction-pay-controller/CHANGELOG.md
index a80cab2bd8..fbe8309fb6 100644
--- a/packages/transaction-pay-controller/CHANGELOG.md
+++ b/packages/transaction-pay-controller/CHANGELOG.md
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Changed
+
+- Derive fiat order source amount from on-chain transaction data (`order.txHash`) with fallback to `order.cryptoAmount` ([#8694](https://github.com/MetaMask/core/pull/8694))
+- Persist fiat order ID and provider code on `transaction.metamaskPay` before polling, so activity views can query order status after controller state cleanup ([#8694](https://github.com/MetaMask/core/pull/8694))
+
## [22.3.1]
### Changed
diff --git a/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.test.ts b/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.test.ts
index c26170a866..f3ea32cb8a 100644
--- a/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.test.ts
+++ b/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.test.ts
@@ -14,17 +14,19 @@ import type {
QuoteRequest,
TransactionPayQuote,
} from '../../types';
-import { buildCaipAssetType, getTokenInfo } from '../../utils/token';
+import { buildCaipAssetType } from '../../utils/token';
+import { updateTransaction } from '../../utils/transaction';
import { getRelayQuotes } from '../relay/relay-quotes';
import { submitRelayQuotes } from '../relay/relay-submit';
import type { RelayQuote } from '../relay/types';
import type { TransactionPayFiatAsset } from './constants';
import { submitFiatQuotes } from './fiat-submit';
import type { FiatQuote } from './types';
-import { deriveFiatAssetForFiatPayment } from './utils';
+import { deriveFiatAssetForFiatPayment, resolveSourceAmountRaw } from './utils';
jest.mock('./utils');
jest.mock('../../utils/token');
+jest.mock('../../utils/transaction');
jest.mock('../relay/relay-quotes');
jest.mock('../relay/relay-submit');
@@ -45,6 +47,8 @@ const FIAT_ASSET_MOCK: TransactionPayFiatAsset = {
chainId: '0x89',
};
+const FIAT_ASSET_CAIP_ID_MOCK = 'eip155:137/slip44:966';
+
const RAMPS_QUOTE_MOCK: RampsQuote = {
provider: '/providers/transak-native-staging',
quote: {
@@ -230,14 +234,13 @@ function getRequest({
};
}
-const FIAT_ASSET_CAIP_ID_MOCK = 'eip155:137/slip44:966';
-
describe('submitFiatQuotes', () => {
const buildCaipAssetTypeMock = jest.mocked(buildCaipAssetType);
- const getTokenInfoMock = jest.mocked(getTokenInfo);
const deriveFiatAssetForFiatPaymentMock = jest.mocked(
deriveFiatAssetForFiatPayment,
);
+ const resolveSourceAmountRawMock = jest.mocked(resolveSourceAmountRaw);
+ const updateTransactionMock = jest.mocked(updateTransaction);
const getRelayQuotesMock = jest.mocked(getRelayQuotes);
const submitRelayQuotesMock = jest.mocked(submitRelayQuotes);
@@ -246,8 +249,8 @@ describe('submitFiatQuotes', () => {
jest.useRealTimers();
buildCaipAssetTypeMock.mockReturnValue(FIAT_ASSET_CAIP_ID_MOCK);
- getTokenInfoMock.mockReturnValue({ decimals: 18, symbol: 'POL' });
deriveFiatAssetForFiatPaymentMock.mockReturnValue(FIAT_ASSET_MOCK);
+ resolveSourceAmountRawMock.mockResolvedValue('1000000000000000000');
getRelayQuotesMock.mockResolvedValue([RELAY_QUOTE_RESULT_MOCK]);
submitRelayQuotesMock.mockResolvedValue({
transactionHash: '0x1234',
@@ -264,6 +267,7 @@ describe('submitFiatQuotes', () => {
},
status: RampsOrderStatus.Completed,
});
+ resolveSourceAmountRawMock.mockResolvedValue('1234500000000000000');
const { callMock, request } = getRequest({ order });
const result = await submitFiatQuotes(request);
@@ -274,6 +278,12 @@ describe('submitFiatQuotes', () => {
ORDER_ID_MOCK,
WALLET_ADDRESS_MOCK,
);
+ expect(resolveSourceAmountRawMock).toHaveBeenCalledWith({
+ messenger: expect.anything(),
+ order,
+ fiatAsset: FIAT_ASSET_MOCK,
+ walletAddress: WALLET_ADDRESS_MOCK,
+ });
expect(getRelayQuotesMock).toHaveBeenCalledTimes(1);
expect(getRelayQuotesMock.mock.calls[0][0].requests).toStrictEqual([
expect.objectContaining({
@@ -297,6 +307,46 @@ describe('submitFiatQuotes', () => {
expect(result).toStrictEqual({ transactionHash: '0x1234' });
});
+ it('persists fiat order metadata on the transaction before polling', async () => {
+ const { request } = getRequest();
+
+ await submitFiatQuotes(request);
+
+ expect(updateTransactionMock).toHaveBeenCalledWith(
+ {
+ transactionId: TRANSACTION_ID_MOCK,
+ messenger: request.messenger,
+ note: 'Persist fiat order metadata',
+ },
+ expect.any(Function),
+ );
+
+ const txDraft = { metamaskPay: undefined } as unknown as TransactionMeta;
+ const updateFn = updateTransactionMock.mock.calls[0][1];
+ updateFn(txDraft);
+
+ expect(txDraft.metamaskPay).toStrictEqual({
+ fiat: { orderId: ORDER_ID_MOCK, provider: 'transak-native-staging' },
+ });
+ });
+
+ it('preserves existing metamaskPay fields when persisting fiat order metadata', async () => {
+ const { request } = getRequest();
+
+ await submitFiatQuotes(request);
+
+ const txDraft = {
+ metamaskPay: { totalFiat: '20.00' },
+ } as unknown as TransactionMeta;
+ const updateFn = updateTransactionMock.mock.calls[0][1];
+ updateFn(txDraft);
+
+ expect(txDraft.metamaskPay).toStrictEqual({
+ totalFiat: '20.00',
+ fiat: { orderId: ORDER_ID_MOCK, provider: 'transak-native-staging' },
+ });
+ });
+
it('throws if wallet address is missing', async () => {
const { request } = getRequest({
transaction: {
@@ -511,7 +561,11 @@ describe('submitFiatQuotes', () => {
});
it('throws if token info is unavailable for the fiat asset', async () => {
- getTokenInfoMock.mockReturnValue(undefined);
+ resolveSourceAmountRawMock.mockRejectedValue(
+ new Error(
+ `Unable to resolve token info for fiat asset ${FIAT_ASSET_MOCK.address} on chain ${FIAT_ASSET_MOCK.chainId}`,
+ ),
+ );
const { request } = getRequest();
await expect(submitFiatQuotes(request)).rejects.toThrow(
@@ -549,20 +603,16 @@ describe('submitFiatQuotes', () => {
);
});
- it.each([
- ['0', 'Invalid fiat order crypto amount: 0'],
- ['-1', 'Invalid fiat order crypto amount: -1'],
- ['NaN', 'Invalid fiat order crypto amount: NaN'],
- ])(
- 'throws if order crypto amount is invalid (%s)',
- async (cryptoAmount, expectedError) => {
- const { request } = getRequest({
- order: getFiatOrderMock({ cryptoAmount }),
- });
-
- await expect(submitFiatQuotes(request)).rejects.toThrow(expectedError);
- },
- );
+ it('throws if resolveSourceAmountRaw rejects', async () => {
+ resolveSourceAmountRawMock.mockRejectedValue(
+ new Error('Invalid fiat order crypto amount: 0'),
+ );
+ const { request } = getRequest();
+
+ await expect(submitFiatQuotes(request)).rejects.toThrow(
+ 'Invalid fiat order crypto amount: 0',
+ );
+ });
it('throws if request has no fiat quotes', async () => {
const { request } = getRequest();
@@ -582,10 +632,11 @@ describe('submitFiatQuotes', () => {
);
});
- it('throws if crypto amount rounds to zero after decimal shift', async () => {
- const { request } = getRequest({
- order: getFiatOrderMock({ cryptoAmount: '0.0000000000000000001' }),
- });
+ it('throws if resolveSourceAmountRaw throws for zero amount', async () => {
+ resolveSourceAmountRawMock.mockRejectedValue(
+ new Error('Computed fiat order source amount is not positive'),
+ );
+ const { request } = getRequest();
await expect(submitFiatQuotes(request)).rejects.toThrow(
'Computed fiat order source amount is not positive',
diff --git a/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.ts b/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.ts
index a2b88eedfd..753ef243a8 100644
--- a/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.ts
+++ b/packages/transaction-pay-controller/src/strategy/fiat/fiat-submit.ts
@@ -14,13 +14,14 @@ import type {
QuoteRequest,
TransactionPayControllerMessenger,
} from '../../types';
-import { buildCaipAssetType, getTokenInfo } from '../../utils/token';
+import { buildCaipAssetType } from '../../utils/token';
+import { updateTransaction } from '../../utils/transaction';
import { getRelayQuotes } from '../relay/relay-quotes';
import { submitRelayQuotes } from '../relay/relay-submit';
import type { RelayQuote } from '../relay/types';
import type { TransactionPayFiatAsset } from './constants';
import type { FiatQuote } from './types';
-import { deriveFiatAssetForFiatPayment } from './utils';
+import { deriveFiatAssetForFiatPayment, resolveSourceAmountRaw } from './utils';
const log = createModuleLogger(projectLogger, 'fiat-submit');
@@ -70,6 +71,18 @@ export async function submitFiatQuotes(
throw new Error('Missing provider code for fiat submission');
}
+ updateTransaction(
+ {
+ transactionId,
+ messenger,
+ note: 'Persist fiat order metadata',
+ },
+ (tx) => {
+ tx.metamaskPay ??= {};
+ tx.metamaskPay.fiat = { orderId, provider: providerCode };
+ },
+ );
+
log('Starting fiat order polling', {
orderId,
providerCode,
@@ -108,41 +121,6 @@ function extractProviderCode(provider: string | undefined): string | null {
return parts.length >= 2 && parts[0] === 'providers' ? parts[1] : null;
}
-/**
- * Converts the order's human-readable crypto amount to a raw token amount.
- *
- * @param options - The conversion options.
- * @param options.cryptoAmount - Human-readable crypto amount from the completed order.
- * @param options.decimals - Token decimals for the fiat asset.
- * @returns The raw token amount as a string.
- */
-function getRawSourceAmountFromOrder({
- cryptoAmount,
- decimals,
-}: {
- cryptoAmount: RampsOrder['cryptoAmount'];
- decimals: number;
-}): string {
- const normalizedAmount = new BigNumber(String(cryptoAmount));
-
- if (!normalizedAmount.isFinite() || normalizedAmount.lte(0)) {
- throw new Error(
- `Invalid fiat order crypto amount: ${String(cryptoAmount)}`,
- );
- }
-
- const rawAmount = normalizedAmount
- .shiftedBy(decimals)
- .decimalPlaces(0, BigNumber.ROUND_DOWN)
- .toFixed(0);
-
- if (!new BigNumber(rawAmount).gt(0)) {
- throw new Error('Computed fiat order source amount is not positive');
- }
-
- return rawAmount;
-}
-
/**
* Validates that the completed order's crypto asset matches the expected fiat asset.
*
@@ -331,21 +309,13 @@ async function submitRelayAfterFiatCompletion({
transactionId,
});
- const tokenInfo = getTokenInfo(
- messenger,
- fiatAsset.address,
- fiatAsset.chainId,
- );
-
- if (!tokenInfo) {
- throw new Error(
- `Unable to resolve token info for fiat asset ${fiatAsset.address} on chain ${fiatAsset.chainId}`,
- );
- }
+ const walletAddress = transaction.txParams.from as Hex;
- const sourceAmountRaw = getRawSourceAmountFromOrder({
- cryptoAmount: order.cryptoAmount,
- decimals: tokenInfo.decimals,
+ const sourceAmountRaw = await resolveSourceAmountRaw({
+ messenger,
+ order,
+ fiatAsset,
+ walletAddress,
});
const baseRequest = quotes[0].request;
diff --git a/packages/transaction-pay-controller/src/strategy/fiat/utils.test.ts b/packages/transaction-pay-controller/src/strategy/fiat/utils.test.ts
index 5f91a94114..c6278b1c37 100644
--- a/packages/transaction-pay-controller/src/strategy/fiat/utils.test.ts
+++ b/packages/transaction-pay-controller/src/strategy/fiat/utils.test.ts
@@ -1,11 +1,49 @@
+import { Web3Provider } from '@ethersproject/providers';
+import type { RampsOrder } from '@metamask/ramps-controller';
import type { TransactionMeta } from '@metamask/transaction-controller';
import { TransactionType } from '@metamask/transaction-controller';
+import type { Hex } from '@metamask/utils';
import { getDefaultRemoteFeatureFlagControllerState } from '../../../../remote-feature-flag-controller/src/remote-feature-flag-controller';
+import { NATIVE_TOKEN_ADDRESS } from '../../constants';
import { getMessengerMock } from '../../tests/messenger-mock';
import { ETH_MAINNET_FIAT_ASSET, FIAT_ASSET_ID_BY_TX_TYPE } from './constants';
import type { TransactionPayFiatAsset } from './constants';
-import { deriveFiatAssetForFiatPayment } from './utils';
+import {
+ deriveFiatAssetForFiatPayment,
+ getRawSourceAmountFromOrderCryptoAmount,
+ resolveSourceAmountRaw,
+} from './utils';
+
+jest.mock('@ethersproject/providers', () => ({
+ ...jest.requireActual('@ethersproject/providers'),
+ Web3Provider: jest.fn(),
+}));
+
+const TX_HASH_MOCK = '0xabc123';
+const WALLET_ADDRESS_MOCK = '0x1111111111111111111111111111111111111111' as Hex;
+const ERC20_ADDRESS_MOCK = '0x2222222222222222222222222222222222222222' as Hex;
+const CHAIN_ID_MOCK = '0x1' as Hex;
+const NETWORK_CLIENT_ID_MOCK = 'net-client-1';
+const PROVIDER_MOCK = { request: jest.fn() };
+
+const NATIVE_FIAT_ASSET_MOCK: TransactionPayFiatAsset = {
+ address: NATIVE_TOKEN_ADDRESS,
+ chainId: CHAIN_ID_MOCK,
+};
+
+const ERC20_FIAT_ASSET_MOCK: TransactionPayFiatAsset = {
+ address: ERC20_ADDRESS_MOCK,
+ chainId: CHAIN_ID_MOCK,
+};
+
+function getOrderMock(overrides: Partial = {}): RampsOrder {
+ return {
+ cryptoAmount: '1.5',
+ txHash: TX_HASH_MOCK,
+ ...overrides,
+ } as RampsOrder;
+}
const FEATURE_FLAG_ASSET_MOCK: TransactionPayFiatAsset = {
address: '0x0000000000000000000000000000000000000abc',
@@ -166,4 +204,219 @@ describe('Fiat Utils', () => {
expect(result).toStrictEqual(ETH_MAINNET_FIAT_ASSET);
});
});
+
+ describe('resolveSourceAmountRaw', () => {
+ const {
+ messenger: resolveMessenger,
+ findNetworkClientIdByChainIdMock,
+ getNetworkClientByIdMock,
+ getTokensControllerStateMock,
+ getRemoteFeatureFlagControllerStateMock:
+ resolveRemoteFeatureFlagControllerStateMock,
+ } = getMessengerMock();
+
+ let mockGetTransactionReceipt: jest.Mock;
+ let mockSend: jest.Mock;
+ let mockGetTransaction: jest.Mock;
+
+ beforeEach(() => {
+ jest.resetAllMocks();
+
+ mockGetTransactionReceipt = jest.fn();
+ mockSend = jest.fn();
+ mockGetTransaction = jest.fn();
+
+ findNetworkClientIdByChainIdMock.mockReturnValue(NETWORK_CLIENT_ID_MOCK);
+ getNetworkClientByIdMock.mockReturnValue({
+ provider: PROVIDER_MOCK,
+ } as never);
+
+ resolveRemoteFeatureFlagControllerStateMock.mockReturnValue({
+ ...getDefaultRemoteFeatureFlagControllerState(),
+ });
+
+ getTokensControllerStateMock.mockReturnValue({
+ allTokens: {
+ [CHAIN_ID_MOCK]: {
+ '0x0': [
+ {
+ address: ERC20_ADDRESS_MOCK,
+ decimals: 6,
+ symbol: 'USDC',
+ aggregators: [],
+ image: '',
+ name: 'USDC',
+ isERC721: false,
+ },
+ ],
+ },
+ },
+ allTokensStale: {},
+ allIgnoredTokens: {},
+ allDetectedTokens: {},
+ } as never);
+
+ (Web3Provider as unknown as jest.Mock).mockImplementation(() => ({
+ getTransactionReceipt: mockGetTransactionReceipt,
+ send: mockSend,
+ getTransaction: mockGetTransaction,
+ }));
+ });
+
+ it('returns on-chain ERC-20 amount from receipt logs', async () => {
+ mockGetTransactionReceipt.mockResolvedValue({
+ logs: [
+ {
+ address: ERC20_ADDRESS_MOCK,
+ topics: [
+ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
+ `0x000000000000000000000000${'aa'.repeat(20)}`,
+ `0x000000000000000000000000${WALLET_ADDRESS_MOCK.slice(2).toLowerCase()}`,
+ ],
+ data: '0x00000000000000000000000000000000000000000000000000000000006acfc0',
+ },
+ ],
+ });
+
+ const result = await resolveSourceAmountRaw({
+ messenger: resolveMessenger,
+ order: getOrderMock(),
+ fiatAsset: ERC20_FIAT_ASSET_MOCK,
+ walletAddress: WALLET_ADDRESS_MOCK,
+ });
+
+ expect(result).toBe('7000000');
+ });
+
+ it('falls back to cryptoAmount when txHash is missing', async () => {
+ const result = await resolveSourceAmountRaw({
+ messenger: resolveMessenger,
+ order: getOrderMock({ txHash: '' }),
+ fiatAsset: ERC20_FIAT_ASSET_MOCK,
+ walletAddress: WALLET_ADDRESS_MOCK,
+ });
+
+ expect(result).toBe('1500000');
+ expect(mockGetTransactionReceipt).not.toHaveBeenCalled();
+ });
+
+ it('falls back to cryptoAmount when receipt is null', async () => {
+ mockGetTransactionReceipt.mockResolvedValue(null);
+
+ const result = await resolveSourceAmountRaw({
+ messenger: resolveMessenger,
+ order: getOrderMock(),
+ fiatAsset: ERC20_FIAT_ASSET_MOCK,
+ walletAddress: WALLET_ADDRESS_MOCK,
+ });
+
+ expect(result).toBe('1500000');
+ });
+
+ it('falls back to cryptoAmount when on-chain read throws', async () => {
+ mockGetTransactionReceipt.mockRejectedValue(new Error('Network error'));
+
+ const result = await resolveSourceAmountRaw({
+ messenger: resolveMessenger,
+ order: getOrderMock(),
+ fiatAsset: ERC20_FIAT_ASSET_MOCK,
+ walletAddress: WALLET_ADDRESS_MOCK,
+ });
+
+ expect(result).toBe('1500000');
+ });
+
+ it('returns native amount from debug_traceTransaction', async () => {
+ mockSend.mockResolvedValue({
+ to: WALLET_ADDRESS_MOCK.toLowerCase(),
+ value: '0x1bc16d674ec80000',
+ calls: [],
+ });
+
+ const result = await resolveSourceAmountRaw({
+ messenger: resolveMessenger,
+ order: getOrderMock(),
+ fiatAsset: NATIVE_FIAT_ASSET_MOCK,
+ walletAddress: WALLET_ADDRESS_MOCK,
+ });
+
+ expect(result).toBe('2000000000000000000');
+ });
+
+ it('falls back to tx.value for native when trace is unsupported', async () => {
+ mockSend.mockRejectedValue(new Error('Method not found'));
+ mockGetTransaction.mockResolvedValue({
+ to: WALLET_ADDRESS_MOCK.toLowerCase(),
+ value: { toString: () => '2000000000000000000' },
+ });
+
+ const result = await resolveSourceAmountRaw({
+ messenger: resolveMessenger,
+ order: getOrderMock(),
+ fiatAsset: NATIVE_FIAT_ASSET_MOCK,
+ walletAddress: WALLET_ADDRESS_MOCK,
+ });
+
+ expect(result).toBe('2000000000000000000');
+ });
+
+ it('throws when token info cannot be resolved for fallback', async () => {
+ getTokensControllerStateMock.mockReturnValue({
+ allTokens: {},
+ allTokensStale: {},
+ allIgnoredTokens: {},
+ allDetectedTokens: {},
+ } as never);
+
+ await expect(
+ resolveSourceAmountRaw({
+ messenger: resolveMessenger,
+ order: getOrderMock({ txHash: '' }),
+ fiatAsset: ERC20_FIAT_ASSET_MOCK,
+ walletAddress: WALLET_ADDRESS_MOCK,
+ }),
+ ).rejects.toThrow(
+ `Unable to resolve token info for fiat asset ${ERC20_ADDRESS_MOCK} on chain ${CHAIN_ID_MOCK}`,
+ );
+ });
+ });
+
+ describe('getRawSourceAmountFromOrderCryptoAmount', () => {
+ it('converts human-readable amount to raw token amount', () => {
+ expect(
+ getRawSourceAmountFromOrderCryptoAmount({
+ cryptoAmount: '1.2345',
+ decimals: 18,
+ }),
+ ).toBe('1234500000000000000');
+ });
+
+ it('truncates fractional sub-decimal amounts', () => {
+ expect(
+ getRawSourceAmountFromOrderCryptoAmount({
+ cryptoAmount: '1.1234567',
+ decimals: 6,
+ }),
+ ).toBe('1123456');
+ });
+
+ it.each([
+ ['0', 'Invalid fiat order crypto amount: 0'],
+ ['-1', 'Invalid fiat order crypto amount: -1'],
+ ['NaN', 'Invalid fiat order crypto amount: NaN'],
+ ])('throws for invalid crypto amount %s', (cryptoAmount, expectedError) => {
+ expect(() =>
+ getRawSourceAmountFromOrderCryptoAmount({ cryptoAmount, decimals: 18 }),
+ ).toThrow(expectedError);
+ });
+
+ it('throws when computed amount rounds to zero', () => {
+ expect(() =>
+ getRawSourceAmountFromOrderCryptoAmount({
+ cryptoAmount: '0.0000000000000000001',
+ decimals: 18,
+ }),
+ ).toThrow('Computed fiat order source amount is not positive');
+ });
+ });
});
diff --git a/packages/transaction-pay-controller/src/strategy/fiat/utils.ts b/packages/transaction-pay-controller/src/strategy/fiat/utils.ts
index 8759473531..c3615e1dab 100644
--- a/packages/transaction-pay-controller/src/strategy/fiat/utils.ts
+++ b/packages/transaction-pay-controller/src/strategy/fiat/utils.ts
@@ -1,11 +1,20 @@
+import type { RampsOrder } from '@metamask/ramps-controller';
import type { TransactionMeta } from '@metamask/transaction-controller';
import { TransactionType } from '@metamask/transaction-controller';
+import type { Hex } from '@metamask/utils';
+import { createModuleLogger } from '@metamask/utils';
+import { BigNumber } from 'bignumber.js';
+import { projectLogger } from '../../logger';
import type { TransactionPayControllerMessenger } from '../../types';
import { getFiatAssetPerTransactionType } from '../../utils/feature-flags';
+import { getTokenInfo } from '../../utils/token';
+import { getTransferredAmountFromTxHash } from '../../utils/transaction';
import type { TransactionPayFiatAsset } from './constants';
import { FIAT_ASSET_ID_BY_TX_TYPE } from './constants';
+const log = createModuleLogger(projectLogger, 'fiat-utils');
+
export function deriveFiatAssetForFiatPayment(
transaction: TransactionMeta,
messenger: TransactionPayControllerMessenger,
@@ -26,3 +35,106 @@ function resolveTransactionType(
(tx) => tx.type && FIAT_ASSET_ID_BY_TX_TYPE[tx.type] !== undefined,
)?.type;
}
+
+/**
+ * Resolves the raw source amount for a completed fiat order.
+ *
+ * Attempts to read the actual transferred amount from the on-chain transaction
+ * identified by `order.txHash`. If the on-chain read fails or returns
+ * no amount, falls back to computing the amount from `order.cryptoAmount`.
+ *
+ * @param options - The resolution options.
+ * @param options.messenger - Controller messenger for network access.
+ * @param options.order - The completed on-ramp order.
+ * @param options.fiatAsset - The fiat asset describing the expected token.
+ * @param options.walletAddress - Recipient wallet address for on-chain lookup.
+ * @returns The raw (atomic) source amount as a decimal string.
+ */
+export async function resolveSourceAmountRaw({
+ messenger,
+ order,
+ fiatAsset,
+ walletAddress,
+}: {
+ messenger: TransactionPayControllerMessenger;
+ order: RampsOrder;
+ fiatAsset: TransactionPayFiatAsset;
+ walletAddress: Hex;
+}): Promise {
+ if (order.txHash) {
+ try {
+ const onChainAmount = await getTransferredAmountFromTxHash({
+ messenger,
+ txHash: order.txHash,
+ chainId: fiatAsset.chainId,
+ tokenAddress: fiatAsset.address,
+ walletAddress,
+ });
+
+ if (onChainAmount) {
+ log('Resolved source amount from on-chain transaction', {
+ txHash: order.txHash,
+ onChainAmount,
+ });
+ return onChainAmount;
+ }
+ } catch (error) {
+ log(
+ 'Failed to read on-chain amount, falling back to order.cryptoAmount',
+ { txHash: order.txHash, error },
+ );
+ }
+ }
+
+ const tokenInfo = getTokenInfo(
+ messenger,
+ fiatAsset.address,
+ fiatAsset.chainId,
+ );
+
+ if (!tokenInfo) {
+ throw new Error(
+ `Unable to resolve token info for fiat asset ${fiatAsset.address} on chain ${fiatAsset.chainId}`,
+ );
+ }
+
+ return getRawSourceAmountFromOrderCryptoAmount({
+ cryptoAmount: order.cryptoAmount,
+ decimals: tokenInfo.decimals,
+ });
+}
+
+/**
+ * Converts the order's human-readable crypto amount to a raw token amount.
+ *
+ * @param options - The conversion options.
+ * @param options.cryptoAmount - Human-readable crypto amount from the completed order.
+ * @param options.decimals - Token decimals for the fiat asset.
+ * @returns The raw token amount as a string.
+ */
+export function getRawSourceAmountFromOrderCryptoAmount({
+ cryptoAmount,
+ decimals,
+}: {
+ cryptoAmount: RampsOrder['cryptoAmount'];
+ decimals: number;
+}): string {
+ const normalizedAmount = new BigNumber(String(cryptoAmount));
+
+ if (!normalizedAmount.isFinite() || normalizedAmount.lte(0)) {
+ throw new Error(
+ `Invalid fiat order crypto amount: ${String(cryptoAmount)}`,
+ );
+ }
+
+ const rawAmount = normalizedAmount
+ .shiftedBy(decimals)
+ .decimalPlaces(0, BigNumber.ROUND_DOWN)
+ .toFixed(0);
+
+ if (!new BigNumber(rawAmount).gt(0)) {
+ throw new Error('Computed fiat order source amount is not positive');
+ }
+
+ return rawAmount;
+}
diff --git a/packages/transaction-pay-controller/src/utils/transaction.test.ts b/packages/transaction-pay-controller/src/utils/transaction.test.ts
index c409c89670..a2328da53f 100644
--- a/packages/transaction-pay-controller/src/utils/transaction.test.ts
+++ b/packages/transaction-pay-controller/src/utils/transaction.test.ts
@@ -1,3 +1,6 @@
+import { Interface } from '@ethersproject/abi';
+import { Web3Provider } from '@ethersproject/providers';
+import { abiERC20 } from '@metamask/metamask-eth-abis';
import {
TransactionStatus,
TransactionType,
@@ -7,6 +10,7 @@ import type { TransactionControllerState } from '@metamask/transaction-controlle
import type { Hex } from '@metamask/utils';
import { noop } from 'lodash';
+import { NATIVE_TOKEN_ADDRESS } from '../constants';
import { getMessengerMock } from '../tests/messenger-mock';
import type {
TransactionData,
@@ -19,6 +23,7 @@ import {
FINALIZED_STATUSES,
collectTransactionIds,
getTransaction,
+ getTransferredAmountFromTxHash,
isPredictWithdrawTransaction,
subscribeAssetChanges,
subscribeTransactionChanges,
@@ -28,6 +33,10 @@ import {
jest.mock('./feature-flags');
jest.mock('./required-tokens');
+jest.mock('@ethersproject/providers', () => ({
+ ...jest.requireActual('@ethersproject/providers'),
+ Web3Provider: jest.fn(),
+}));
const TRANSACTION_ID_MOCK = '123-456';
const ERROR_MESSAGE_MOCK = 'Test error';
@@ -652,3 +661,429 @@ describe('Transaction Utils', () => {
});
});
});
+
+const TX_HASH_MOCK = '0xabc123';
+const WALLET_ADDRESS_RECEIPT_MOCK =
+ '0x1111111111111111111111111111111111111111' as Hex;
+const ERC20_ADDRESS_RECEIPT_MOCK =
+ '0x2222222222222222222222222222222222222222' as Hex;
+const CHAIN_ID_RECEIPT_MOCK = '0x1' as Hex;
+const NETWORK_CLIENT_ID_RECEIPT_MOCK = 'net-client-1';
+const PROVIDER_RECEIPT_MOCK = { request: jest.fn() };
+
+const TRANSFER_EVENT_TOPIC =
+ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';
+
+const erc20Interface = new Interface(abiERC20);
+
+function paddedAddress(address: Hex): string {
+ return `0x000000000000000000000000${address.slice(2).toLowerCase()}`;
+}
+
+function encodeTransferLog(
+ to: Hex,
+ amount: string,
+): {
+ address: string;
+ topics: string[];
+ data: string;
+} {
+ const encoded = erc20Interface.encodeEventLog(
+ erc20Interface.getEvent('Transfer'),
+ [WALLET_ADDRESS_RECEIPT_MOCK, to, amount],
+ );
+
+ return {
+ address: ERC20_ADDRESS_RECEIPT_MOCK,
+ topics: encoded.topics,
+ data: encoded.data,
+ };
+}
+
+describe('getTransferredAmountFromTxHash', () => {
+ const {
+ messenger: receiptMessenger,
+ findNetworkClientIdByChainIdMock: receiptFindNetworkMock,
+ getNetworkClientByIdMock: receiptGetNetworkMock,
+ } = getMessengerMock();
+
+ let mockGetTransactionReceipt: jest.Mock;
+ let mockSend: jest.Mock;
+ let mockGetTx: jest.Mock;
+
+ beforeEach(() => {
+ jest.resetAllMocks();
+
+ mockGetTransactionReceipt = jest.fn();
+ mockSend = jest.fn();
+ mockGetTx = jest.fn();
+
+ receiptFindNetworkMock.mockReturnValue(NETWORK_CLIENT_ID_RECEIPT_MOCK);
+ receiptGetNetworkMock.mockReturnValue({
+ provider: PROVIDER_RECEIPT_MOCK,
+ } as never);
+
+ (Web3Provider as unknown as jest.Mock).mockImplementation(() => ({
+ getTransactionReceipt: mockGetTransactionReceipt,
+ send: mockSend,
+ getTransaction: mockGetTx,
+ }));
+ });
+
+ describe('native token', () => {
+ it('returns amount from debug_traceTransaction for direct transfer', async () => {
+ mockSend.mockResolvedValue({
+ to: WALLET_ADDRESS_RECEIPT_MOCK.toLowerCase(),
+ value: '0xde0b6b3a7640000',
+ calls: [],
+ });
+
+ const result = await getTransferredAmountFromTxHash({
+ messenger: receiptMessenger,
+ txHash: TX_HASH_MOCK,
+ chainId: CHAIN_ID_RECEIPT_MOCK,
+ tokenAddress: NATIVE_TOKEN_ADDRESS,
+ walletAddress: WALLET_ADDRESS_RECEIPT_MOCK,
+ });
+
+ expect(result).toBe('1000000000000000000');
+ expect(mockSend).toHaveBeenCalledWith('debug_traceTransaction', [
+ TX_HASH_MOCK,
+ { tracer: 'callTracer' },
+ ]);
+ });
+
+ it('sums native value from nested internal calls', async () => {
+ mockSend.mockResolvedValue({
+ to: '0xcontract',
+ value: '0x0',
+ calls: [
+ {
+ to: WALLET_ADDRESS_RECEIPT_MOCK.toLowerCase(),
+ value: '0xde0b6b3a7640000',
+ calls: [],
+ },
+ {
+ to: '0xother',
+ value: '0x1',
+ calls: [
+ {
+ to: WALLET_ADDRESS_RECEIPT_MOCK.toLowerCase(),
+ value: '0xde0b6b3a7640000',
+ },
+ ],
+ },
+ ],
+ });
+
+ const result = await getTransferredAmountFromTxHash({
+ messenger: receiptMessenger,
+ txHash: TX_HASH_MOCK,
+ chainId: CHAIN_ID_RECEIPT_MOCK,
+ tokenAddress: NATIVE_TOKEN_ADDRESS,
+ walletAddress: WALLET_ADDRESS_RECEIPT_MOCK,
+ });
+
+ expect(result).toBe('2000000000000000000');
+ });
+
+ it('falls back to tx.value when debug_traceTransaction is unsupported', async () => {
+ mockSend.mockRejectedValue(new Error('Method not found'));
+ mockGetTx.mockResolvedValue({
+ to: WALLET_ADDRESS_RECEIPT_MOCK.toLowerCase(),
+ value: { toString: () => '1500000000000000000' },
+ });
+
+ const result = await getTransferredAmountFromTxHash({
+ messenger: receiptMessenger,
+ txHash: TX_HASH_MOCK,
+ chainId: CHAIN_ID_RECEIPT_MOCK,
+ tokenAddress: NATIVE_TOKEN_ADDRESS,
+ walletAddress: WALLET_ADDRESS_RECEIPT_MOCK,
+ });
+
+ expect(result).toBe('1500000000000000000');
+ });
+
+ it('returns undefined when trace returns zero value and tx.to does not match wallet', async () => {
+ mockSend.mockResolvedValue({
+ to: '0xcontract',
+ value: '0x0',
+ });
+ mockGetTx.mockResolvedValue({
+ to: '0xcontract',
+ value: { toString: () => '1000000000000000000' },
+ });
+
+ const result = await getTransferredAmountFromTxHash({
+ messenger: receiptMessenger,
+ txHash: TX_HASH_MOCK,
+ chainId: CHAIN_ID_RECEIPT_MOCK,
+ tokenAddress: NATIVE_TOKEN_ADDRESS,
+ walletAddress: WALLET_ADDRESS_RECEIPT_MOCK,
+ });
+
+ expect(result).toBeUndefined();
+ });
+
+ it('returns undefined when trace is unsupported and transaction is not found', async () => {
+ mockSend.mockRejectedValue(new Error('Method not found'));
+ mockGetTx.mockResolvedValue(null);
+
+ const result = await getTransferredAmountFromTxHash({
+ messenger: receiptMessenger,
+ txHash: TX_HASH_MOCK,
+ chainId: CHAIN_ID_RECEIPT_MOCK,
+ tokenAddress: NATIVE_TOKEN_ADDRESS,
+ walletAddress: WALLET_ADDRESS_RECEIPT_MOCK,
+ });
+
+ expect(result).toBeUndefined();
+ });
+
+ it('returns undefined when trace is unsupported and native tx.value is zero', async () => {
+ mockSend.mockRejectedValue(new Error('Method not found'));
+ mockGetTx.mockResolvedValue({
+ to: WALLET_ADDRESS_RECEIPT_MOCK.toLowerCase(),
+ value: { toString: () => '0' },
+ });
+
+ const result = await getTransferredAmountFromTxHash({
+ messenger: receiptMessenger,
+ txHash: TX_HASH_MOCK,
+ chainId: CHAIN_ID_RECEIPT_MOCK,
+ tokenAddress: NATIVE_TOKEN_ADDRESS,
+ walletAddress: WALLET_ADDRESS_RECEIPT_MOCK,
+ });
+
+ expect(result).toBeUndefined();
+ });
+
+ it('ignores trace value with 0x0', async () => {
+ mockSend.mockResolvedValue({
+ to: WALLET_ADDRESS_RECEIPT_MOCK.toLowerCase(),
+ value: '0x0',
+ });
+ mockGetTx.mockResolvedValue({
+ to: WALLET_ADDRESS_RECEIPT_MOCK.toLowerCase(),
+ value: { toString: () => '500' },
+ });
+
+ const result = await getTransferredAmountFromTxHash({
+ messenger: receiptMessenger,
+ txHash: TX_HASH_MOCK,
+ chainId: CHAIN_ID_RECEIPT_MOCK,
+ tokenAddress: NATIVE_TOKEN_ADDRESS,
+ walletAddress: WALLET_ADDRESS_RECEIPT_MOCK,
+ });
+
+ expect(result).toBe('500');
+ });
+ });
+
+ describe('ERC-20 token', () => {
+ it('decodes transfer amount from receipt logs', async () => {
+ mockGetTransactionReceipt.mockResolvedValue({
+ logs: [encodeTransferLog(WALLET_ADDRESS_RECEIPT_MOCK, '5000000')],
+ });
+
+ const result = await getTransferredAmountFromTxHash({
+ messenger: receiptMessenger,
+ txHash: TX_HASH_MOCK,
+ chainId: CHAIN_ID_RECEIPT_MOCK,
+ tokenAddress: ERC20_ADDRESS_RECEIPT_MOCK,
+ walletAddress: WALLET_ADDRESS_RECEIPT_MOCK,
+ });
+
+ expect(result).toBe('5000000');
+ });
+
+ it('sums multiple Transfer events to the same wallet', async () => {
+ mockGetTransactionReceipt.mockResolvedValue({
+ logs: [
+ encodeTransferLog(WALLET_ADDRESS_RECEIPT_MOCK, '3000000'),
+ encodeTransferLog(WALLET_ADDRESS_RECEIPT_MOCK, '2000000'),
+ ],
+ });
+
+ const result = await getTransferredAmountFromTxHash({
+ messenger: receiptMessenger,
+ txHash: TX_HASH_MOCK,
+ chainId: CHAIN_ID_RECEIPT_MOCK,
+ tokenAddress: ERC20_ADDRESS_RECEIPT_MOCK,
+ walletAddress: WALLET_ADDRESS_RECEIPT_MOCK,
+ });
+
+ expect(result).toBe('5000000');
+ });
+
+ it('ignores Transfer events to other addresses', async () => {
+ const otherAddress = '0x3333333333333333333333333333333333333333' as Hex;
+ mockGetTransactionReceipt.mockResolvedValue({
+ logs: [
+ encodeTransferLog(otherAddress, '9000000'),
+ encodeTransferLog(WALLET_ADDRESS_RECEIPT_MOCK, '1000000'),
+ ],
+ });
+
+ const result = await getTransferredAmountFromTxHash({
+ messenger: receiptMessenger,
+ txHash: TX_HASH_MOCK,
+ chainId: CHAIN_ID_RECEIPT_MOCK,
+ tokenAddress: ERC20_ADDRESS_RECEIPT_MOCK,
+ walletAddress: WALLET_ADDRESS_RECEIPT_MOCK,
+ });
+
+ expect(result).toBe('1000000');
+ });
+
+ it('ignores logs from other token contracts', async () => {
+ const otherToken = '0x4444444444444444444444444444444444444444' as Hex;
+ const transferLog = encodeTransferLog(
+ WALLET_ADDRESS_RECEIPT_MOCK,
+ '5000000',
+ );
+ mockGetTransactionReceipt.mockResolvedValue({
+ logs: [
+ { ...transferLog, address: otherToken },
+ encodeTransferLog(WALLET_ADDRESS_RECEIPT_MOCK, '1000000'),
+ ],
+ });
+
+ const result = await getTransferredAmountFromTxHash({
+ messenger: receiptMessenger,
+ txHash: TX_HASH_MOCK,
+ chainId: CHAIN_ID_RECEIPT_MOCK,
+ tokenAddress: ERC20_ADDRESS_RECEIPT_MOCK,
+ walletAddress: WALLET_ADDRESS_RECEIPT_MOCK,
+ });
+
+ expect(result).toBe('1000000');
+ });
+
+ it('ignores logs with non-Transfer event topics', async () => {
+ mockGetTransactionReceipt.mockResolvedValue({
+ logs: [
+ {
+ address: ERC20_ADDRESS_RECEIPT_MOCK,
+ topics: [
+ '0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925',
+ paddedAddress(WALLET_ADDRESS_RECEIPT_MOCK),
+ paddedAddress(WALLET_ADDRESS_RECEIPT_MOCK),
+ ],
+ data: '0x00000000000000000000000000000000000000000000000000000000006acfc0',
+ },
+ encodeTransferLog(WALLET_ADDRESS_RECEIPT_MOCK, '2000000'),
+ ],
+ });
+
+ const result = await getTransferredAmountFromTxHash({
+ messenger: receiptMessenger,
+ txHash: TX_HASH_MOCK,
+ chainId: CHAIN_ID_RECEIPT_MOCK,
+ tokenAddress: ERC20_ADDRESS_RECEIPT_MOCK,
+ walletAddress: WALLET_ADDRESS_RECEIPT_MOCK,
+ });
+
+ expect(result).toBe('2000000');
+ });
+
+ it('returns undefined when receipt is not found', async () => {
+ mockGetTransactionReceipt.mockResolvedValue(null);
+
+ const result = await getTransferredAmountFromTxHash({
+ messenger: receiptMessenger,
+ txHash: TX_HASH_MOCK,
+ chainId: CHAIN_ID_RECEIPT_MOCK,
+ tokenAddress: ERC20_ADDRESS_RECEIPT_MOCK,
+ walletAddress: WALLET_ADDRESS_RECEIPT_MOCK,
+ });
+
+ expect(result).toBeUndefined();
+ });
+
+ it('returns undefined when no matching Transfer logs exist', async () => {
+ mockGetTransactionReceipt.mockResolvedValue({
+ logs: [],
+ });
+
+ const result = await getTransferredAmountFromTxHash({
+ messenger: receiptMessenger,
+ txHash: TX_HASH_MOCK,
+ chainId: CHAIN_ID_RECEIPT_MOCK,
+ tokenAddress: ERC20_ADDRESS_RECEIPT_MOCK,
+ walletAddress: WALLET_ADDRESS_RECEIPT_MOCK,
+ });
+
+ expect(result).toBeUndefined();
+ });
+
+ it('skips malformed log entries gracefully', async () => {
+ mockGetTransactionReceipt.mockResolvedValue({
+ logs: [
+ {
+ address: ERC20_ADDRESS_RECEIPT_MOCK,
+ topics: [TRANSFER_EVENT_TOPIC],
+ data: '0xBADDATA',
+ },
+ encodeTransferLog(WALLET_ADDRESS_RECEIPT_MOCK, '4000000'),
+ ],
+ });
+
+ const result = await getTransferredAmountFromTxHash({
+ messenger: receiptMessenger,
+ txHash: TX_HASH_MOCK,
+ chainId: CHAIN_ID_RECEIPT_MOCK,
+ tokenAddress: ERC20_ADDRESS_RECEIPT_MOCK,
+ walletAddress: WALLET_ADDRESS_RECEIPT_MOCK,
+ });
+
+ expect(result).toBe('4000000');
+ });
+
+ it('returns undefined when all Transfer amounts are zero', async () => {
+ mockGetTransactionReceipt.mockResolvedValue({
+ logs: [encodeTransferLog(WALLET_ADDRESS_RECEIPT_MOCK, '0')],
+ });
+
+ const result = await getTransferredAmountFromTxHash({
+ messenger: receiptMessenger,
+ txHash: TX_HASH_MOCK,
+ chainId: CHAIN_ID_RECEIPT_MOCK,
+ tokenAddress: ERC20_ADDRESS_RECEIPT_MOCK,
+ walletAddress: WALLET_ADDRESS_RECEIPT_MOCK,
+ });
+
+ expect(result).toBeUndefined();
+ });
+ });
+
+ it('propagates provider errors for ERC-20', async () => {
+ mockGetTransactionReceipt.mockRejectedValue(new Error('RPC error'));
+
+ await expect(
+ getTransferredAmountFromTxHash({
+ messenger: receiptMessenger,
+ txHash: TX_HASH_MOCK,
+ chainId: CHAIN_ID_RECEIPT_MOCK,
+ tokenAddress: ERC20_ADDRESS_RECEIPT_MOCK,
+ walletAddress: WALLET_ADDRESS_RECEIPT_MOCK,
+ }),
+ ).rejects.toThrow('RPC error');
+ });
+
+ it('propagates provider errors for native when both trace and getTransaction fail', async () => {
+ mockSend.mockRejectedValue(new Error('Trace failed'));
+ mockGetTx.mockRejectedValue(new Error('RPC error'));
+
+ await expect(
+ getTransferredAmountFromTxHash({
+ messenger: receiptMessenger,
+ txHash: TX_HASH_MOCK,
+ chainId: CHAIN_ID_RECEIPT_MOCK,
+ tokenAddress: NATIVE_TOKEN_ADDRESS,
+ walletAddress: WALLET_ADDRESS_RECEIPT_MOCK,
+ }),
+ ).rejects.toThrow('RPC error');
+ });
+});
diff --git a/packages/transaction-pay-controller/src/utils/transaction.ts b/packages/transaction-pay-controller/src/utils/transaction.ts
index c97d4004ec..97e772e666 100644
--- a/packages/transaction-pay-controller/src/utils/transaction.ts
+++ b/packages/transaction-pay-controller/src/utils/transaction.ts
@@ -1,3 +1,6 @@
+import { Interface } from '@ethersproject/abi';
+import { Web3Provider } from '@ethersproject/providers';
+import { abiERC20 } from '@metamask/metamask-eth-abis';
import {
TransactionStatus,
TransactionType,
@@ -5,6 +8,7 @@ import {
import type { TransactionMeta } from '@metamask/transaction-controller';
import type { Hex } from '@metamask/utils';
import { createModuleLogger } from '@metamask/utils';
+import { BigNumber } from 'bignumber.js';
import type { Patch } from 'immer';
import { cloneDeep } from 'lodash';
@@ -16,6 +20,7 @@ import type {
} from '../types';
import { getAssetsUnifyStateFeature } from './feature-flags';
import { parseRequiredTokens } from './required-tokens';
+import { getNativeToken } from './token';
const log = createModuleLogger(projectLogger, 'transaction');
@@ -356,3 +361,206 @@ function onTransactionFinalized(
log('Transaction finalized', { transaction });
removeTransactionData(transaction.id);
}
+
+const erc20Interface = new Interface(abiERC20);
+
+const ERC20_TRANSFER_EVENT_TOPIC = erc20Interface.getEventTopic('Transfer');
+
+/**
+ * Reads the transferred token amount from a completed on-chain transaction.
+ *
+ * For native tokens the amount is resolved via `debug_traceTransaction`
+ * (internal-call aware), falling back to the top-level `tx.value`.
+ * For ERC-20 tokens the amount is decoded from `Transfer` event logs
+ * in the transaction receipt.
+ *
+ * @param options - The options.
+ * @param options.messenger - Controller messenger for network access.
+ * @param options.txHash - Transaction hash of the completed on-chain transaction.
+ * @param options.chainId - Chain ID where the transaction was executed.
+ * @param options.tokenAddress - Address of the transferred token.
+ * @param options.walletAddress - Recipient wallet address to filter transfers to.
+ * @returns The raw (atomic) transferred amount as a decimal string,
+ * or `undefined` if the amount cannot be determined.
+ */
+export async function getTransferredAmountFromTxHash({
+ messenger,
+ txHash,
+ chainId,
+ tokenAddress,
+ walletAddress,
+}: {
+ messenger: TransactionPayControllerMessenger;
+ txHash: string;
+ chainId: Hex;
+ tokenAddress: Hex;
+ walletAddress: Hex;
+}): Promise {
+ const provider = getEthersProvider(messenger, chainId);
+
+ const isNative =
+ tokenAddress.toLowerCase() === getNativeToken(chainId).toLowerCase();
+
+ if (isNative) {
+ return await getNativeTransferAmount(provider, txHash, walletAddress);
+ }
+
+ return await getErc20TransferAmount(
+ provider,
+ txHash,
+ tokenAddress,
+ walletAddress,
+ );
+}
+
+/**
+ * Resolves the native token amount received by a wallet from a transaction.
+ *
+ * 1. Attempts `debug_traceTransaction` with `callTracer` to walk internal
+ * calls and sum all native value transfers targeting `walletAddress`.
+ * 2. Falls back to the top-level `tx.value` when the wallet is the direct
+ * recipient and the trace RPC is unavailable or errors.
+ *
+ * @param provider - Ethers Web3Provider.
+ * @param txHash - Transaction hash.
+ * @param walletAddress - Recipient wallet address.
+ * @returns Raw amount as a decimal string, or `undefined`.
+ */
+async function getNativeTransferAmount(
+ provider: Web3Provider,
+ txHash: string,
+ walletAddress: Hex,
+): Promise {
+ try {
+ const trace = await provider.send('debug_traceTransaction', [
+ txHash,
+ { tracer: 'callTracer' },
+ ]);
+
+ const amount = sumNativeValueFromTrace(trace, walletAddress);
+ if (amount.gt(0)) {
+ return amount.toFixed(0);
+ }
+ } catch {
+ // debug_traceTransaction not supported — fall through to tx.value
+ }
+
+ const tx = await provider.getTransaction(txHash);
+ if (!tx) {
+ return undefined;
+ }
+
+ if (tx.to?.toLowerCase() !== walletAddress.toLowerCase()) {
+ return undefined;
+ }
+
+ return positiveOrUndefined(tx.value.toString());
+}
+
+/**
+ * Resolves the ERC-20 token amount received by a wallet from a transaction
+ * by decoding `Transfer` event logs from the transaction receipt.
+ *
+ * @param provider - Ethers Web3Provider.
+ * @param txHash - Transaction hash.
+ * @param tokenAddress - ERC-20 token contract address.
+ * @param walletAddress - Recipient wallet address.
+ * @returns Raw amount as a decimal string, or `undefined`.
+ */
+async function getErc20TransferAmount(
+ provider: Web3Provider,
+ txHash: string,
+ tokenAddress: Hex,
+ walletAddress: Hex,
+): Promise {
+ const receipt = await provider.getTransactionReceipt(txHash);
+
+ if (!receipt) {
+ return undefined;
+ }
+
+ let total = new BigNumber(0);
+
+ for (const txLog of receipt.logs) {
+ if (txLog.address.toLowerCase() !== tokenAddress.toLowerCase()) {
+ continue;
+ }
+
+ if (!txLog.topics[0] || txLog.topics[0] !== ERC20_TRANSFER_EVENT_TOPIC) {
+ continue;
+ }
+
+ try {
+ const parsed = erc20Interface.parseLog(txLog);
+ const to = (parsed.args[1] as string).toLowerCase();
+
+ if (to !== walletAddress.toLowerCase()) {
+ continue;
+ }
+
+ total = total.plus(parsed.args[2].toString());
+ } catch {
+ continue;
+ }
+ }
+
+ return positiveOrUndefined(total.toFixed(0));
+}
+
+type CallTrace = {
+ to?: string;
+ value?: string;
+ calls?: CallTrace[];
+};
+
+/**
+ * Recursively walks a `callTracer` result and sums native value
+ * transferred to a specific address.
+ *
+ * @param trace - Call trace node.
+ * @param walletAddress - Target address to accumulate value for.
+ * @returns Accumulated native value as BigNumber.
+ */
+function sumNativeValueFromTrace(
+ trace: CallTrace,
+ walletAddress: Hex,
+): BigNumber {
+ let total = new BigNumber(0);
+
+ if (
+ trace.to?.toLowerCase() === walletAddress.toLowerCase() &&
+ trace.value &&
+ trace.value !== '0x0'
+ ) {
+ total = total.plus(new BigNumber(trace.value));
+ }
+
+ if (trace.calls) {
+ for (const child of trace.calls) {
+ total = total.plus(sumNativeValueFromTrace(child, walletAddress));
+ }
+ }
+
+ return total;
+}
+
+function getEthersProvider(
+ messenger: TransactionPayControllerMessenger,
+ chainId: Hex,
+): Web3Provider {
+ const networkClientId = messenger.call(
+ 'NetworkController:findNetworkClientIdByChainId',
+ chainId,
+ );
+
+ const { provider } = messenger.call(
+ 'NetworkController:getNetworkClientById',
+ networkClientId,
+ );
+
+ return new Web3Provider(provider);
+}
+
+function positiveOrUndefined(amount: string): string | undefined {
+ return new BigNumber(amount).gt(0) ? amount : undefined;
+}
From 26872df8c18f767d1ac6f4933abe4554c07b86e8 Mon Sep 17 00:00:00 2001
From: Charly Chevalier
Date: Tue, 12 May 2026 21:44:57 +0200
Subject: [PATCH 3/3] feat(snap-account-service): handle
`:accountGroup{Created,Updated,Removed}` events (#8770)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
## Explanation
Now handles all group updates in case groups gets created/updated or
removed. We still filter those events with the currently selected
account group before forwarding this to the Snaps.
## References
N/A
## Checklist
- [ ] I've updated the test suite for new or updated code as appropriate
- [ ] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [ ] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/processes/updating-changelogs.md)
- [ ] I've introduced [breaking
changes](https://github.com/MetaMask/core/tree/main/docs/processes/breaking-changes.md)
in this PR and have prepared draft pull requests for clients and
consumer packages to resolve them
---
> [!NOTE]
> **Medium Risk**
> Changes how selected accounts are forwarded into the legacy Snap
keyring by adding new AccountTreeController lifecycle event handlers;
bugs here could desync Snap-selected accounts from the UI-selected
group.
>
> **Overview**
> Extends `SnapAccountService` to listen for
`AccountTreeController:accountGroupCreated`, `:accountGroupUpdated`, and
`:accountGroupRemoved` and update the legacy Snap keyring’s selected
accounts when (and only when) the affected group is currently selected.
>
> Refactors forwarding into `#forwardSelectedAccounts` with shared
logging/error handling, adds helpers for fetching the selected group and
group object, and updates mirrored types/tests/changelog to include
group `id` and the new events.
>
> Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
866a677aa91329cc5bf3977e80365c3512a97f25. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).
---
packages/snap-account-service/CHANGELOG.md | 5 +-
.../src/SnapAccountService.test.ts | 186 +++++++++++++++++-
.../src/SnapAccountService.ts | 141 ++++++++++---
packages/snap-account-service/src/types.ts | 25 +++
4 files changed, 322 insertions(+), 35 deletions(-)
diff --git a/packages/snap-account-service/CHANGELOG.md b/packages/snap-account-service/CHANGELOG.md
index 8aae4645b9..2d89203d8f 100644
--- a/packages/snap-account-service/CHANGELOG.md
+++ b/packages/snap-account-service/CHANGELOG.md
@@ -28,9 +28,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- The service messenger now requires the `KeyringController:withController` action.
- Add `handleKeyringSnapMessage` ([#8758](https://github.com/MetaMask/core/pull/8758))
- This will be the new entry point for consumer that needs to forward keyring events to a account management Snap (instead of using the legacy Snap keyring instance directly).
-- Forward selected account group accounts ([#8763](https://github.com/MetaMask/core/pull/8763))
+- Forward selected account group accounts ([#8763](https://github.com/MetaMask/core/pull/8763)), ([#8770](https://github.com/MetaMask/core/pull/8770))
- This logic used to live on the clients.
- - The service messenger now requires the `KeyringController:unlock`, `AccountTreeController:selectedAccountGroupChange` events and `AccountTreeController:getAccountGroupObject` action.
+ - The service messenger now requires the `KeyringController:unlock`, `AccountTreeController:selectedAccountGroupChange`, `AccountTreeController:accountGroup{Created,Updated,Removed}` events.
+ - The service messenger now requires the `AccountTreeController:getSelectedAccountGroup` and `AccountTreeController:getAccountGroupObject` actions.
### Changed
diff --git a/packages/snap-account-service/src/SnapAccountService.test.ts b/packages/snap-account-service/src/SnapAccountService.test.ts
index 871206f85d..e1569d63a0 100644
--- a/packages/snap-account-service/src/SnapAccountService.test.ts
+++ b/packages/snap-account-service/src/SnapAccountService.test.ts
@@ -40,6 +40,18 @@ type MockTruncatedSnap = Pick<
'id' | 'initialPermissions' | 'enabled' | 'blocked'
>;
+/** Mock account group type for tests. */
+type MockAccountGroup = Pick;
+
+/** Mock Snap keyring type for tests. */
+type MockSnapKeyring = {
+ type: KeyringTypes.snap;
+ handleKeyringSnapMessage?: jest.MockedFunction<
+ SnapKeyring['handleKeyringSnapMessage']
+ >;
+ setSelectedAccounts?: jest.MockedFunction;
+};
+
type Mocks = {
// eslint-disable-next-line @typescript-eslint/naming-convention
SnapController: {
@@ -105,6 +117,9 @@ function getMessenger(
'KeyringController:stateChange',
'KeyringController:unlock',
'AccountTreeController:selectedAccountGroupChange',
+ 'AccountTreeController:accountGroupCreated',
+ 'AccountTreeController:accountGroupUpdated',
+ 'AccountTreeController:accountGroupRemoved',
],
});
return messenger;
@@ -202,11 +217,57 @@ function buildSnap(id: string, hasKeyring: boolean): TruncatedSnap {
/**
* Builds a minimal `AccountGroupObject` for tests.
*
+ * @param id - The group ID.
* @param accounts - The list of account IDs in the group.
* @returns A minimal `AccountGroupObject`.
*/
-function buildGroup(accounts: string[]): AccountGroupObject {
- return { accounts } as unknown as AccountGroupObject;
+function buildGroup(
+ id: AccountGroupId,
+ accounts: string[],
+): AccountGroupObject {
+ return { id, accounts } as MockAccountGroup as AccountGroupObject;
+}
+
+/**
+ * Publishes an AccountTreeController accountGroupCreated event on the root
+ * messenger.
+ *
+ * @param rootMessenger - The root messenger.
+ * @param group - The created account group.
+ */
+function publishAccountGroupCreated(
+ rootMessenger: RootMessenger,
+ group: AccountGroupObject,
+): void {
+ rootMessenger.publish('AccountTreeController:accountGroupCreated', group);
+}
+
+/**
+ * Publishes an AccountTreeController accountGroupUpdated event on the root
+ * messenger.
+ *
+ * @param rootMessenger - The root messenger.
+ * @param group - The updated account group.
+ */
+function publishAccountGroupUpdated(
+ rootMessenger: RootMessenger,
+ group: AccountGroupObject,
+): void {
+ rootMessenger.publish('AccountTreeController:accountGroupUpdated', group);
+}
+
+/**
+ * Publishes an AccountTreeController accountGroupRemoved event on the root
+ * messenger.
+ *
+ * @param rootMessenger - The root messenger.
+ * @param groupId - The removed account group ID.
+ */
+function publishAccountGroupRemoved(
+ rootMessenger: RootMessenger,
+ groupId: AccountGroupId,
+): void {
+ rootMessenger.publish('AccountTreeController:accountGroupRemoved', groupId);
}
/**
@@ -277,7 +338,7 @@ function mockLegacySnapKeyring(
>;
},
): void {
- const snapKeyring = {
+ const snapKeyring: MockSnapKeyring = {
type: KeyringTypes.snap,
handleKeyringSnapMessage,
setSelectedAccounts,
@@ -287,7 +348,7 @@ function mockLegacySnapKeyring(
get keyrings() {
return Object.freeze([
{
- keyring: snapKeyring as unknown as KeyringEntry['keyring'],
+ keyring: snapKeyring as KeyringEntry['keyring'],
metadata: { id: 'id-snap', name: KeyringTypes.snap },
},
]);
@@ -642,7 +703,7 @@ describe('SnapAccountService', () => {
const setSelectedAccounts = jest.fn().mockResolvedValue(undefined);
mockLegacySnapKeyring(mocks, { setSelectedAccounts });
mocks.AccountTreeController.getAccountGroupObject.mockReturnValue(
- buildGroup(MOCK_ACCOUNTS),
+ buildGroup(MOCK_GROUP_ID, MOCK_ACCOUNTS),
);
expect(service).toBeDefined();
@@ -694,7 +755,7 @@ describe('SnapAccountService', () => {
const setSelectedAccounts = jest.fn().mockRejectedValue(error);
mockLegacySnapKeyring(mocks, { setSelectedAccounts });
mocks.AccountTreeController.getAccountGroupObject.mockReturnValue(
- buildGroup(MOCK_ACCOUNTS),
+ buildGroup(MOCK_GROUP_ID, MOCK_ACCOUNTS),
);
const consoleErrorSpy = jest
.spyOn(console, 'error')
@@ -706,7 +767,7 @@ describe('SnapAccountService', () => {
expect(setSelectedAccounts).toHaveBeenCalledWith(MOCK_ACCOUNTS);
expect(consoleErrorSpy).toHaveBeenCalledWith(
- 'Error handling selected account group change:',
+ 'Error forwarding selected accounts:',
error,
);
@@ -729,7 +790,7 @@ describe('SnapAccountService', () => {
MOCK_GROUP_ID,
);
mocks.AccountTreeController.getAccountGroupObject.mockReturnValue(
- buildGroup(MOCK_ACCOUNTS),
+ buildGroup(MOCK_GROUP_ID, MOCK_ACCOUNTS),
);
expect(service).toBeDefined();
@@ -770,7 +831,7 @@ describe('SnapAccountService', () => {
MOCK_GROUP_ID,
);
mocks.AccountTreeController.getAccountGroupObject.mockReturnValue(
- buildGroup(MOCK_ACCOUNTS),
+ buildGroup(MOCK_GROUP_ID, MOCK_ACCOUNTS),
);
const consoleErrorSpy = jest
.spyOn(console, 'error')
@@ -782,11 +843,116 @@ describe('SnapAccountService', () => {
expect(setSelectedAccounts).toHaveBeenCalledWith(MOCK_ACCOUNTS);
expect(consoleErrorSpy).toHaveBeenCalledWith(
- 'Error forwarding selected account group on unlock:',
+ 'Error forwarding selected accounts:',
error,
);
consoleErrorSpy.mockRestore();
});
});
+
+ describe.each([
+ ['accountGroupCreated', publishAccountGroupCreated] as const,
+ ['accountGroupUpdated', publishAccountGroupUpdated] as const,
+ ])('on AccountTreeController:%s', (_eventName, publishEvent) => {
+ const MOCK_GROUP_ID = 'keyring:01JABC/group-1' as AccountGroupId;
+ const OTHER_GROUP_ID = 'keyring:01JABC/group-2' as AccountGroupId;
+ const MOCK_ACCOUNTS = [
+ '00000000-0000-0000-0000-000000000001',
+ '00000000-0000-0000-0000-000000000002',
+ ];
+
+ it('forwards the accounts from the event payload when the affected group is the selected one', async () => {
+ const { service, rootMessenger, mocks } = setup();
+ const setSelectedAccounts = jest.fn().mockResolvedValue(undefined);
+ mockLegacySnapKeyring(mocks, { setSelectedAccounts });
+ mocks.AccountTreeController.getSelectedAccountGroup.mockReturnValue(
+ MOCK_GROUP_ID,
+ );
+ expect(service).toBeDefined();
+
+ publishEvent(rootMessenger, buildGroup(MOCK_GROUP_ID, MOCK_ACCOUNTS));
+ await flushMicrotasks();
+
+ expect(
+ mocks.AccountTreeController.getAccountGroupObject,
+ ).not.toHaveBeenCalled();
+ expect(setSelectedAccounts).toHaveBeenCalledWith(MOCK_ACCOUNTS);
+ });
+
+ it('does nothing when the affected group is not the selected one', async () => {
+ const { service, rootMessenger, mocks } = setup();
+ const setSelectedAccounts = jest.fn().mockResolvedValue(undefined);
+ mockLegacySnapKeyring(mocks, { setSelectedAccounts });
+ mocks.AccountTreeController.getSelectedAccountGroup.mockReturnValue(
+ OTHER_GROUP_ID,
+ );
+ expect(service).toBeDefined();
+
+ publishEvent(rootMessenger, buildGroup(MOCK_GROUP_ID, MOCK_ACCOUNTS));
+ await flushMicrotasks();
+
+ expect(
+ mocks.AccountTreeController.getAccountGroupObject,
+ ).not.toHaveBeenCalled();
+ expect(setSelectedAccounts).not.toHaveBeenCalled();
+ });
+
+ it('does nothing when no account group is selected', async () => {
+ const { service, rootMessenger, mocks } = setup();
+ const setSelectedAccounts = jest.fn().mockResolvedValue(undefined);
+ mockLegacySnapKeyring(mocks, { setSelectedAccounts });
+ mocks.AccountTreeController.getSelectedAccountGroup.mockReturnValue('');
+ expect(service).toBeDefined();
+
+ publishEvent(rootMessenger, buildGroup(MOCK_GROUP_ID, MOCK_ACCOUNTS));
+ await flushMicrotasks();
+
+ expect(
+ mocks.AccountTreeController.getAccountGroupObject,
+ ).not.toHaveBeenCalled();
+ expect(setSelectedAccounts).not.toHaveBeenCalled();
+ });
+ });
+
+ describe('on AccountTreeController:accountGroupRemoved', () => {
+ const MOCK_GROUP_ID = 'keyring:01JABC/group-1' as AccountGroupId;
+ const OTHER_GROUP_ID = 'keyring:01JABC/group-2' as AccountGroupId;
+
+ it('clears the selected accounts when the removed group is the selected one', async () => {
+ const { service, rootMessenger, mocks } = setup();
+ const setSelectedAccounts = jest.fn().mockResolvedValue(undefined);
+ mockLegacySnapKeyring(mocks, { setSelectedAccounts });
+ mocks.AccountTreeController.getSelectedAccountGroup.mockReturnValue(
+ MOCK_GROUP_ID,
+ );
+ expect(service).toBeDefined();
+
+ publishAccountGroupRemoved(rootMessenger, MOCK_GROUP_ID);
+ await flushMicrotasks();
+
+ expect(
+ mocks.AccountTreeController.getAccountGroupObject,
+ ).not.toHaveBeenCalled();
+ expect(setSelectedAccounts).toHaveBeenCalledWith([]);
+ });
+
+ it('does nothing when the removed group is not the selected one', async () => {
+ const { service, rootMessenger, mocks } = setup();
+ const setSelectedAccounts = jest.fn().mockResolvedValue(undefined);
+ mockLegacySnapKeyring(mocks, { setSelectedAccounts });
+ mocks.AccountTreeController.getSelectedAccountGroup.mockReturnValue(
+ OTHER_GROUP_ID,
+ );
+ expect(service).toBeDefined();
+
+ publishAccountGroupRemoved(rootMessenger, MOCK_GROUP_ID);
+ await flushMicrotasks();
+
+ expect(
+ mocks.AccountTreeController.getAccountGroupObject,
+ ).not.toHaveBeenCalled();
+ expect(setSelectedAccounts).not.toHaveBeenCalled();
+ });
+ });
});
diff --git a/packages/snap-account-service/src/SnapAccountService.ts b/packages/snap-account-service/src/SnapAccountService.ts
index ec2a285bec..7f73096178 100644
--- a/packages/snap-account-service/src/SnapAccountService.ts
+++ b/packages/snap-account-service/src/SnapAccountService.ts
@@ -11,7 +11,7 @@ import type {
KeyringEntry,
} from '@metamask/keyring-controller';
import { KeyringTypes } from '@metamask/keyring-controller';
-import type { BaseKeyring } from '@metamask/keyring-utils';
+import type { AccountId, BaseKeyring } from '@metamask/keyring-utils';
import type { Messenger } from '@metamask/messenger';
import type {
SnapControllerGetRunnableSnapsAction,
@@ -42,6 +42,10 @@ import type {
AccountTreeControllerGetAccountGroupObjectAction,
AccountTreeControllerGetSelectedAccountGroupAction,
AccountTreeControllerSelectedAccountGroupChangeEvent,
+ AccountTreeControllerAccountGroupCreatedEvent,
+ AccountTreeControllerAccountGroupUpdatedEvent,
+ AccountTreeControllerAccountGroupRemovedEvent,
+ AccountGroupObject,
} from './types';
/**
@@ -100,7 +104,10 @@ type AllowedEvents =
| SnapControllerSnapUninstalledEvent
| KeyringControllerStateChangeEvent
| KeyringControllerUnlockEvent
- | AccountTreeControllerSelectedAccountGroupChangeEvent;
+ | AccountTreeControllerSelectedAccountGroupChangeEvent
+ | AccountTreeControllerAccountGroupCreatedEvent
+ | AccountTreeControllerAccountGroupUpdatedEvent
+ | AccountTreeControllerAccountGroupRemovedEvent;
/**
* The messenger which is restricted to actions and events accessed by
@@ -181,6 +188,21 @@ export class SnapAccountService {
(groupId) => this.#handleSelectedAccountGroupChange(groupId),
);
+ this.#messenger.subscribe(
+ 'AccountTreeController:accountGroupCreated',
+ (group) => this.#handleAccountGroupCreatedOrUpdated(group),
+ );
+
+ this.#messenger.subscribe(
+ 'AccountTreeController:accountGroupUpdated',
+ (group) => this.#handleAccountGroupCreatedOrUpdated(group),
+ );
+
+ this.#messenger.subscribe(
+ 'AccountTreeController:accountGroupRemoved',
+ (groupId) => this.#handleAccountGroupRemoved(groupId),
+ );
+
this.#messenger.subscribe('KeyringController:unlock', () =>
this.#handleUnlock(),
);
@@ -193,9 +215,10 @@ export class SnapAccountService {
* @param groupId - The ID of the newly selected account group.
*/
#handleSelectedAccountGroupChange(groupId: AccountGroupId | ''): void {
- this.#forwardSelectedAccountGroup(groupId).catch((error) => {
- console.error('Error handling selected account group change:', error);
- });
+ this.#forwardSelectedAccounts(
+ groupId,
+ this.#getAccountGroup(groupId)?.accounts,
+ );
}
/**
@@ -203,15 +226,38 @@ export class SnapAccountService {
* selected account group's accounts to the Snap keyring.
*/
#handleUnlock(): void {
- const groupId = this.#messenger.call(
- 'AccountTreeController:getSelectedAccountGroup',
+ const groupId = this.#getSelectedAccountGroupId();
+ this.#forwardSelectedAccounts(
+ groupId,
+ this.#getAccountGroup(groupId)?.accounts,
);
- this.#forwardSelectedAccountGroup(groupId).catch((error) => {
- console.error(
- 'Error forwarding selected account group on unlock:',
- error,
+ }
+
+ /**
+ * Handles created or updated account groups by forwarding the accounts of the currently
+ * selected account group to the Snap keyring, if the created/updated group is currently selected.
+ *
+ * @param group - The account group being created or updated.
+ */
+ #handleAccountGroupCreatedOrUpdated(group: AccountGroupObject): void {
+ if (group.id === this.#getSelectedAccountGroupId()) {
+ this.#forwardSelectedAccounts(group.id, group.accounts);
+ }
+ }
+
+ /**
+ * Handles removed account groups by forwarding the accounts of the currently
+ * selected account group to the Snap keyring, if the removed group is currently selected.
+ *
+ * @param groupId - The ID of the account group being removed.
+ */
+ #handleAccountGroupRemoved(groupId: AccountGroupId): void {
+ if (groupId === this.#getSelectedAccountGroupId()) {
+ this.#forwardSelectedAccounts(
+ groupId,
+ [], // Clearing accounts since the group is removed
);
- });
+ }
}
/**
@@ -322,24 +368,73 @@ export class SnapAccountService {
*
* @param groupId - The ID of the account group whose accounts should be
* forwarded. If empty, this is a no-op.
+ * @param accounts - The accounts to forward. If not defined, this is a no-op.
*/
- async #forwardSelectedAccountGroup(
+ #forwardSelectedAccounts(
groupId: AccountGroupId | '',
- ): Promise {
- if (groupId) {
- const group = this.#messenger.call(
- 'AccountTreeController:getAccountGroupObject',
- groupId,
+ accounts: AccountId[] | undefined,
+ ): void {
+ if (!groupId) {
+ log(
+ 'No selected account group, skipping forwarding selected accounts to Snap keyring.',
);
+ return;
+ }
- if (group) {
+ if (!accounts) {
+ log(
+ `Account group ("${groupId}") has no accounts, skipping forwarding selected accounts to Snap keyring.`,
+ );
+ return;
+ }
+
+ const forwardSelectedAccounts = async (): Promise => {
+ if (accounts.length) {
log(
- `Forwarding selected accounts (from "${groupId}") to Snap keyring: ${group.accounts.join(', ')}`,
+ `Forwarding selected accounts (from "${groupId}"): ${accounts.join(', ')}`,
);
-
- const snapKeyring = await this.getLegacySnapKeyring();
- await snapKeyring.setSelectedAccounts(group.accounts);
+ } else {
+ log(`Clearing selected accounts (from "${groupId}")`);
}
+
+ const snapKeyring = await this.getLegacySnapKeyring();
+ await snapKeyring.setSelectedAccounts(accounts);
+ };
+
+ // There is nothing we can do if forwarding fails. This will auto-recover on the next relevant event.
+ forwardSelectedAccounts().catch((error) => {
+ console.error('Error forwarding selected accounts:', error);
+ });
+ }
+
+ /**
+ * Gets the account group object for the given group ID.
+ *
+ * @param groupId - The ID of the account group.
+ * @returns The account group object, or undefined if the group ID is empty or the group does not exist.
+ */
+ #getAccountGroup(
+ groupId: AccountGroupId | '',
+ ): AccountGroupObject | undefined {
+ if (!groupId) {
+ return undefined;
}
+
+ return this.#messenger.call(
+ 'AccountTreeController:getAccountGroupObject',
+ groupId,
+ );
+ }
+
+ /**
+ * Gets the currently selected account group ID.
+ *
+ * @returns The currently selected account group ID, or an empty string if
+ * there is no selected account group.
+ */
+ #getSelectedAccountGroupId(): AccountGroupId | '' {
+ return this.#messenger.call(
+ 'AccountTreeController:getSelectedAccountGroup',
+ );
}
}
diff --git a/packages/snap-account-service/src/types.ts b/packages/snap-account-service/src/types.ts
index 9e175a1b7e..e9485a7d5f 100644
--- a/packages/snap-account-service/src/types.ts
+++ b/packages/snap-account-service/src/types.ts
@@ -25,6 +25,7 @@ import { AccountId } from '@metamask/keyring-utils';
* narrow. See the note above.
*/
export type AccountGroupObject = {
+ id: AccountGroupId;
accounts: AccountId[];
};
@@ -51,3 +52,27 @@ export type AccountTreeControllerSelectedAccountGroupChangeEvent = {
type: `AccountTreeController:selectedAccountGroupChange`;
payload: [AccountGroupId | '', AccountGroupId | ''];
};
+
+/**
+ * Mirror of `AccountTreeControllerAccountGroupCreatedEvent`.
+ */
+export type AccountTreeControllerAccountGroupCreatedEvent = {
+ type: `AccountTreeController:accountGroupCreated`;
+ payload: [AccountGroupObject];
+};
+
+/**
+ * Mirror of `AccountTreeControllerAccountGroupUpdatedEvent`.
+ */
+export type AccountTreeControllerAccountGroupUpdatedEvent = {
+ type: `AccountTreeController:accountGroupUpdated`;
+ payload: [AccountGroupObject];
+};
+
+/**
+ * Mirror of `AccountTreeControllerAccountGroupRemovedEvent`.
+ */
+export type AccountTreeControllerAccountGroupRemovedEvent = {
+ type: `AccountTreeController:accountGroupRemoved`;
+ payload: [AccountGroupId];
+};