diff --git a/package.json b/package.json index d44656eb95e..ad9f1ac0a9b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@metamask/core-monorepo", - "version": "596.0.0", + "version": "598.0.0", "private": true, "description": "Monorepo for packages shared between MetaMask clients", "repository": { diff --git a/packages/account-tree-controller/package.json b/packages/account-tree-controller/package.json index 002165103bd..5bc18d0523c 100644 --- a/packages/account-tree-controller/package.json +++ b/packages/account-tree-controller/package.json @@ -61,7 +61,7 @@ "@metamask/auto-changelog": "^3.4.4", "@metamask/keyring-api": "^21.0.0", "@metamask/keyring-controller": "^23.1.0", - "@metamask/multichain-account-service": "^1.4.0", + "@metamask/multichain-account-service": "^1.5.0", "@metamask/profile-sync-controller": "^25.1.0", "@metamask/providers": "^22.1.0", "@metamask/snaps-controllers": "^14.0.1", diff --git a/packages/assets-controllers/package.json b/packages/assets-controllers/package.json index 007bd969e23..d605c337f41 100644 --- a/packages/assets-controllers/package.json +++ b/packages/assets-controllers/package.json @@ -88,14 +88,14 @@ "@metamask/keyring-controller": "^23.1.0", "@metamask/keyring-internal-api": "^9.0.0", "@metamask/keyring-snap-client": "^8.0.0", - "@metamask/multichain-account-service": "^1.4.0", + "@metamask/multichain-account-service": "^1.5.0", "@metamask/network-controller": "^24.2.0", "@metamask/permission-controller": "^11.0.6", "@metamask/phishing-controller": "^14.0.0", "@metamask/preferences-controller": "^20.0.1", "@metamask/providers": "^22.1.0", "@metamask/snaps-controllers": "^14.0.1", - "@metamask/transaction-controller": "^60.5.0", + "@metamask/transaction-controller": "^60.6.0", "@types/jest": "^27.4.1", "@types/lodash": "^4.14.191", "@types/node": "^16.18.54", diff --git a/packages/bridge-controller/package.json b/packages/bridge-controller/package.json index dc206caa83d..299275b7e98 100644 --- a/packages/bridge-controller/package.json +++ b/packages/bridge-controller/package.json @@ -73,7 +73,7 @@ "@metamask/remote-feature-flag-controller": "^1.7.0", "@metamask/snaps-controllers": "^14.0.1", "@metamask/superstruct": "^3.1.0", - "@metamask/transaction-controller": "^60.5.0", + "@metamask/transaction-controller": "^60.6.0", "@types/jest": "^27.4.1", "deepmerge": "^4.2.2", "jest": "^27.5.1", diff --git a/packages/bridge-status-controller/package.json b/packages/bridge-status-controller/package.json index 22630436c55..e3b941cf7c4 100644 --- a/packages/bridge-status-controller/package.json +++ b/packages/bridge-status-controller/package.json @@ -62,7 +62,7 @@ "@metamask/gas-fee-controller": "^24.0.0", "@metamask/network-controller": "^24.2.0", "@metamask/snaps-controllers": "^14.0.1", - "@metamask/transaction-controller": "^60.5.0", + "@metamask/transaction-controller": "^60.6.0", "@types/jest": "^27.4.1", "deepmerge": "^4.2.2", "jest": "^27.5.1", diff --git a/packages/earn-controller/package.json b/packages/earn-controller/package.json index a3eeaf3b238..7a270378d72 100644 --- a/packages/earn-controller/package.json +++ b/packages/earn-controller/package.json @@ -59,7 +59,7 @@ "@metamask/account-tree-controller": "^1.4.0", "@metamask/auto-changelog": "^3.4.4", "@metamask/network-controller": "^24.2.0", - "@metamask/transaction-controller": "^60.5.0", + "@metamask/transaction-controller": "^60.6.0", "@types/jest": "^27.4.1", "deepmerge": "^4.2.2", "jest": "^27.5.1", diff --git a/packages/eip-5792-middleware/CHANGELOG.md b/packages/eip-5792-middleware/CHANGELOG.md index 4b9a0dd57d1..80e8b753b90 100644 --- a/packages/eip-5792-middleware/CHANGELOG.md +++ b/packages/eip-5792-middleware/CHANGELOG.md @@ -10,7 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Bump `@metamask/utils` from `^11.8.0` to `^11.8.1` ([#6708](https://github.com/MetaMask/core/pull/6708)) -- Bump `@metamask/transaction-controller` from `^60.4.0` to `^60.5.0` ([#6708](https://github.com/MetaMask/core/pull/6733)) +- Bump `@metamask/transaction-controller` from `^60.4.0` to `^60.6.0` ([#6708](https://github.com/MetaMask/core/pull/6733), [#6771](https://github.com/MetaMask/core/pull/6771)) ## [1.2.0] diff --git a/packages/eip-5792-middleware/package.json b/packages/eip-5792-middleware/package.json index f9910aab9cd..fd67b404b38 100644 --- a/packages/eip-5792-middleware/package.json +++ b/packages/eip-5792-middleware/package.json @@ -49,7 +49,7 @@ "dependencies": { "@metamask/eth-json-rpc-middleware": "^17.0.1", "@metamask/superstruct": "^3.1.0", - "@metamask/transaction-controller": "^60.5.0", + "@metamask/transaction-controller": "^60.6.0", "@metamask/utils": "^11.8.1", "lodash": "^4.17.21", "uuid": "^8.3.2" diff --git a/packages/multichain-account-service/CHANGELOG.md b/packages/multichain-account-service/CHANGELOG.md index e43524b063b..a1e7006119d 100644 --- a/packages/multichain-account-service/CHANGELOG.md +++ b/packages/multichain-account-service/CHANGELOG.md @@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.5.0] + +### Added + +- Add an optional `options` parameter to `MultichainAccountWallet.createMultichainAccountGroup()` ([#6759](https://github.com/MetaMask/core/pull/6759)) + - Introduces `options.waitForAllProvidersToFinishCreatingAccounts`, that will make `createMultichainAccountGroup` await either only the EVM provider or all the providers to have created their accounts depending on the value. Defaults to `false` (only awaits for EVM accounts creation by default). + ## [1.4.0] ### Changed @@ -208,7 +215,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Add `MultichainAccountService` ([#6141](https://github.com/MetaMask/core/pull/6141)), ([#6165](https://github.com/MetaMask/core/pull/6165)) - This service manages multichain accounts/wallets. -[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/multichain-account-service@1.4.0...HEAD +[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/multichain-account-service@1.5.0...HEAD +[1.5.0]: https://github.com/MetaMask/core/compare/@metamask/multichain-account-service@1.4.0...@metamask/multichain-account-service@1.5.0 [1.4.0]: https://github.com/MetaMask/core/compare/@metamask/multichain-account-service@1.3.0...@metamask/multichain-account-service@1.4.0 [1.3.0]: https://github.com/MetaMask/core/compare/@metamask/multichain-account-service@1.2.0...@metamask/multichain-account-service@1.3.0 [1.2.0]: https://github.com/MetaMask/core/compare/@metamask/multichain-account-service@1.1.0...@metamask/multichain-account-service@1.2.0 diff --git a/packages/multichain-account-service/package.json b/packages/multichain-account-service/package.json index 8225364e001..242e9b95853 100644 --- a/packages/multichain-account-service/package.json +++ b/packages/multichain-account-service/package.json @@ -1,6 +1,6 @@ { "name": "@metamask/multichain-account-service", - "version": "1.4.0", + "version": "1.5.0", "description": "Service to manage multichain accounts", "keywords": [ "MetaMask", diff --git a/packages/multichain-account-service/src/MultichainAccountWallet.test.ts b/packages/multichain-account-service/src/MultichainAccountWallet.test.ts index 239b7068c5f..09d1b0e9420 100644 --- a/packages/multichain-account-service/src/MultichainAccountWallet.test.ts +++ b/packages/multichain-account-service/src/MultichainAccountWallet.test.ts @@ -347,9 +347,32 @@ describe('MultichainAccountWallet', () => { expect( await wallet.createMultichainAccountGroup(groupIndex), ).toBeDefined(); - await new Promise(process.nextTick); expect(mockSolProviderError).toHaveBeenCalled(); }); + + it('fails to create an account group if any of the provider fails to create its account and waitForAllProvidersToFinishCreatingAccounts is true', async () => { + const groupIndex = 1; + + const mockEvmAccount = MockAccountBuilder.from(MOCK_HD_ACCOUNT_1) + .withEntropySource(MOCK_HD_KEYRING_1.metadata.id) + .withGroupIndex(0) + .get(); + const { wallet, providers } = setup({ + accounts: [[mockEvmAccount]], // 1 provider + }); + const [provider] = providers; + provider.createAccounts.mockRejectedValueOnce( + new Error('Unable to create accounts'), + ); + + await expect( + wallet.createMultichainAccountGroup(groupIndex, { + waitForAllProvidersToFinishCreatingAccounts: true, + }), + ).rejects.toThrow( + 'Unable to create multichain account group for index: 1', + ); + }); }); describe('createNextMultichainAccountGroup', () => { diff --git a/packages/multichain-account-service/src/MultichainAccountWallet.ts b/packages/multichain-account-service/src/MultichainAccountWallet.ts index 99d5093f30c..f90c0a73694 100644 --- a/packages/multichain-account-service/src/MultichainAccountWallet.ts +++ b/packages/multichain-account-service/src/MultichainAccountWallet.ts @@ -296,11 +296,22 @@ export class MultichainAccountWallet< * NOTE: This operation WILL lock the wallet's mutex. * * @param groupIndex - The group index to use. - * @throws If any of the account providers fails to create their accounts. + * @param options - Options to configure the account creation. + * @param options.waitForAllProvidersToFinishCreatingAccounts - Whether to wait for all + * account providers to finish creating their accounts before returning. If `false`, only + * the EVM provider will be awaited, while all other providers will create their accounts + * in the background. Defaults to `false`. + * @throws If any of the account providers fails to create their accounts and + * the `waitForAllProvidersToFinishCreatingAccounts` option is set to `true`. If `false`, + * errors from non-EVM providers will be logged but ignored, and only errors from the + * EVM provider will be thrown. * @returns The multichain account group for this group index. */ async createMultichainAccountGroup( groupIndex: number, + options: { + waitForAllProvidersToFinishCreatingAccounts?: boolean; + } = { waitForAllProvidersToFinishCreatingAccounts: false }, ): Promise> { return await this.#withLock('in-progress:create-accounts', async () => { const nextGroupIndex = this.getNextGroupIndex(); @@ -324,41 +335,72 @@ export class MultichainAccountWallet< this.#log(`Creating new group for index ${groupIndex}...`); - // Extract the EVM provider from the list of providers. - // We will only await the EVM provider to create its accounts, while - // all other providers will be started in the background. - const [evmProvider, ...otherProviders] = this.#providers; - assert( - evmProvider instanceof EvmAccountProvider, - 'EVM account provider must be first', - ); + if (options?.waitForAllProvidersToFinishCreatingAccounts) { + // Create account with all providers and await them. + const results = await Promise.allSettled( + this.#providers.map((provider) => + provider.createAccounts({ + entropySource: this.#entropySource, + groupIndex, + }), + ), + ); - // Create account with the EVM provider first and await it. - // If it fails, we don't start creating accounts with other providers. - try { - await evmProvider.createAccounts({ - entropySource: this.#entropySource, - groupIndex, - }); - } catch (error) { - const errorMessage = `Unable to create multichain account group for index: ${groupIndex} with provider "${evmProvider.getName()}". Error: ${(error as Error).message}`; - this.#log(`${ERROR_PREFIX} ${errorMessage}:`, error); - throw new Error(errorMessage); - } + // If any of the provider failed to create their accounts, then we consider the + // multichain account group to have failed too. + if (results.some((result) => result.status === 'rejected')) { + // NOTE: Some accounts might still have been created on other account providers. We + // don't rollback them. + const error = `Unable to create multichain account group for index: ${groupIndex}`; + + let message = `${error}:`; + for (const result of results) { + if (result.status === 'rejected') { + message += `\n- ${result.reason}`; + } + } + this.#log(`${WARNING_PREFIX} ${message}`); + console.warn(message); + + throw new Error(error); + } + } else { + // Extract the EVM provider from the list of providers. + // We will only await the EVM provider to create its accounts, while + // all other providers will be started in the background. + const [evmProvider, ...otherProviders] = this.#providers; + assert( + evmProvider instanceof EvmAccountProvider, + 'EVM account provider must be first', + ); - // Create account with other providers in the background - otherProviders.forEach((provider) => { - provider - .createAccounts({ + // Create account with the EVM provider first and await it. + // If it fails, we don't start creating accounts with other providers. + try { + await evmProvider.createAccounts({ entropySource: this.#entropySource, groupIndex, - }) - .catch((error) => { - // Log errors from background providers but don't fail the operation - const errorMessage = `Could not to create account with provider "${provider.getName()}" for multichain account group index: ${groupIndex}`; - this.#log(`${WARNING_PREFIX} ${errorMessage}:`, error); }); - }); + } catch (error) { + const errorMessage = `Unable to create multichain account group for index: ${groupIndex} with provider "${evmProvider.getName()}". Error: ${(error as Error).message}`; + this.#log(`${ERROR_PREFIX} ${errorMessage}:`, error); + throw new Error(errorMessage); + } + + // Create account with other providers in the background + otherProviders.forEach((provider) => { + provider + .createAccounts({ + entropySource: this.#entropySource, + groupIndex, + }) + .catch((error) => { + // Log errors from background providers but don't fail the operation + const errorMessage = `Could not to create account with provider "${provider.getName()}" for multichain account group index: ${groupIndex}`; + this.#log(`${WARNING_PREFIX} ${errorMessage}:`, error); + }); + }); + } // -------------------------------------------------------------------------------- // READ THIS CAREFULLY: @@ -419,7 +461,9 @@ export class MultichainAccountWallet< async createNextMultichainAccountGroup(): Promise< MultichainAccountGroup > { - return this.createMultichainAccountGroup(this.getNextGroupIndex()); + return this.createMultichainAccountGroup(this.getNextGroupIndex(), { + waitForAllProvidersToFinishCreatingAccounts: true, + }); } /** diff --git a/packages/network-enablement-controller/package.json b/packages/network-enablement-controller/package.json index 53e8e4b3a8f..7bef3c50e3f 100644 --- a/packages/network-enablement-controller/package.json +++ b/packages/network-enablement-controller/package.json @@ -50,7 +50,7 @@ "@metamask/auto-changelog": "^3.4.4", "@metamask/multichain-network-controller": "^1.0.0", "@metamask/network-controller": "^24.2.0", - "@metamask/transaction-controller": "^60.5.0", + "@metamask/transaction-controller": "^60.6.0", "@types/jest": "^27.4.1", "deepmerge": "^4.2.2", "jest": "^27.5.1", diff --git a/packages/phishing-controller/package.json b/packages/phishing-controller/package.json index e94270fb91b..9a63a2d3da4 100644 --- a/packages/phishing-controller/package.json +++ b/packages/phishing-controller/package.json @@ -57,7 +57,7 @@ }, "devDependencies": { "@metamask/auto-changelog": "^3.4.4", - "@metamask/transaction-controller": "^60.5.0", + "@metamask/transaction-controller": "^60.6.0", "@types/jest": "^27.4.1", "deepmerge": "^4.2.2", "jest": "^27.5.1", diff --git a/packages/shield-controller/package.json b/packages/shield-controller/package.json index c2595fb4827..775f4f31671 100644 --- a/packages/shield-controller/package.json +++ b/packages/shield-controller/package.json @@ -56,7 +56,7 @@ "@lavamoat/preinstall-always-fail": "^2.1.0", "@metamask/auto-changelog": "^3.4.4", "@metamask/signature-controller": "^34.0.0", - "@metamask/transaction-controller": "^60.5.0", + "@metamask/transaction-controller": "^60.6.0", "@ts-bridge/cli": "^0.6.1", "@types/jest": "^27.4.1", "deepmerge": "^4.2.2", diff --git a/packages/transaction-controller/CHANGELOG.md b/packages/transaction-controller/CHANGELOG.md index 1ca0ff647dc..f1c52468d8d 100644 --- a/packages/transaction-controller/CHANGELOG.md +++ b/packages/transaction-controller/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [60.6.0] + ### Added - Expose `addTransaction` and `addTransactionBatch` methods through the messenger ([#6749](https://github.com/MetaMask/core/pull/6749)) @@ -1841,7 +1843,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/transaction-controller@60.5.0...HEAD +[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@60.6.0...HEAD +[60.6.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@60.5.0...@metamask/transaction-controller@60.6.0 [60.5.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@60.4.0...@metamask/transaction-controller@60.5.0 [60.4.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@60.3.0...@metamask/transaction-controller@60.4.0 [60.3.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@60.2.0...@metamask/transaction-controller@60.3.0 diff --git a/packages/transaction-controller/package.json b/packages/transaction-controller/package.json index 46dd8497549..d75e413c6cb 100644 --- a/packages/transaction-controller/package.json +++ b/packages/transaction-controller/package.json @@ -1,6 +1,6 @@ { "name": "@metamask/transaction-controller", - "version": "60.5.0", + "version": "60.6.0", "description": "Stores transactions alongside their periodically updated statuses and manages interactions such as approval and cancellation", "keywords": [ "MetaMask", diff --git a/packages/user-operation-controller/package.json b/packages/user-operation-controller/package.json index a0c033dd5eb..c3637f7a652 100644 --- a/packages/user-operation-controller/package.json +++ b/packages/user-operation-controller/package.json @@ -67,7 +67,7 @@ "@metamask/gas-fee-controller": "^24.0.0", "@metamask/keyring-controller": "^23.1.0", "@metamask/network-controller": "^24.2.0", - "@metamask/transaction-controller": "^60.5.0", + "@metamask/transaction-controller": "^60.6.0", "@types/jest": "^27.4.1", "deepmerge": "^4.2.2", "jest": "^27.5.1", diff --git a/yarn.lock b/yarn.lock index 0bb4c9c41a0..6b667497f20 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2413,7 +2413,7 @@ __metadata: "@metamask/base-controller": "npm:^8.4.0" "@metamask/keyring-api": "npm:^21.0.0" "@metamask/keyring-controller": "npm:^23.1.0" - "@metamask/multichain-account-service": "npm:^1.4.0" + "@metamask/multichain-account-service": "npm:^1.5.0" "@metamask/profile-sync-controller": "npm:^25.1.0" "@metamask/providers": "npm:^22.1.0" "@metamask/snaps-controllers": "npm:^14.0.1" @@ -2601,7 +2601,7 @@ __metadata: "@metamask/keyring-internal-api": "npm:^9.0.0" "@metamask/keyring-snap-client": "npm:^8.0.0" "@metamask/metamask-eth-abis": "npm:^3.1.1" - "@metamask/multichain-account-service": "npm:^1.4.0" + "@metamask/multichain-account-service": "npm:^1.5.0" "@metamask/network-controller": "npm:^24.2.0" "@metamask/permission-controller": "npm:^11.0.6" "@metamask/phishing-controller": "npm:^14.0.0" @@ -2612,7 +2612,7 @@ __metadata: "@metamask/snaps-controllers": "npm:^14.0.1" "@metamask/snaps-sdk": "npm:^9.0.0" "@metamask/snaps-utils": "npm:^11.0.0" - "@metamask/transaction-controller": "npm:^60.5.0" + "@metamask/transaction-controller": "npm:^60.6.0" "@metamask/utils": "npm:^11.8.1" "@types/bn.js": "npm:^5.1.5" "@types/jest": "npm:^27.4.1" @@ -2747,7 +2747,7 @@ __metadata: "@metamask/remote-feature-flag-controller": "npm:^1.7.0" "@metamask/snaps-controllers": "npm:^14.0.1" "@metamask/superstruct": "npm:^3.1.0" - "@metamask/transaction-controller": "npm:^60.5.0" + "@metamask/transaction-controller": "npm:^60.6.0" "@metamask/utils": "npm:^11.8.1" "@types/jest": "npm:^27.4.1" bignumber.js: "npm:^9.1.2" @@ -2786,7 +2786,7 @@ __metadata: "@metamask/polling-controller": "npm:^14.0.0" "@metamask/snaps-controllers": "npm:^14.0.1" "@metamask/superstruct": "npm:^3.1.0" - "@metamask/transaction-controller": "npm:^60.5.0" + "@metamask/transaction-controller": "npm:^60.6.0" "@metamask/utils": "npm:^11.8.1" "@types/jest": "npm:^27.4.1" bignumber.js: "npm:^9.1.2" @@ -3057,7 +3057,7 @@ __metadata: "@metamask/keyring-api": "npm:^21.0.0" "@metamask/network-controller": "npm:^24.2.0" "@metamask/stake-sdk": "npm:^3.2.1" - "@metamask/transaction-controller": "npm:^60.5.0" + "@metamask/transaction-controller": "npm:^60.6.0" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" jest: "npm:^27.5.1" @@ -3081,7 +3081,7 @@ __metadata: "@metamask/keyring-controller": "npm:^23.1.0" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/superstruct": "npm:^3.1.0" - "@metamask/transaction-controller": "npm:^60.5.0" + "@metamask/transaction-controller": "npm:^60.6.0" "@metamask/utils": "npm:^11.8.1" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -3845,7 +3845,7 @@ __metadata: languageName: node linkType: hard -"@metamask/multichain-account-service@npm:^1.4.0, @metamask/multichain-account-service@workspace:packages/multichain-account-service": +"@metamask/multichain-account-service@npm:^1.5.0, @metamask/multichain-account-service@workspace:packages/multichain-account-service": version: 0.0.0-use.local resolution: "@metamask/multichain-account-service@workspace:packages/multichain-account-service" dependencies: @@ -4057,7 +4057,7 @@ __metadata: "@metamask/keyring-api": "npm:^21.0.0" "@metamask/multichain-network-controller": "npm:^1.0.0" "@metamask/network-controller": "npm:^24.2.0" - "@metamask/transaction-controller": "npm:^60.5.0" + "@metamask/transaction-controller": "npm:^60.6.0" "@metamask/utils": "npm:^11.8.1" "@types/jest": "npm:^27.4.1" deepmerge: "npm:^4.2.2" @@ -4213,7 +4213,7 @@ __metadata: "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/base-controller": "npm:^8.4.0" "@metamask/controller-utils": "npm:^11.14.0" - "@metamask/transaction-controller": "npm:^60.5.0" + "@metamask/transaction-controller": "npm:^60.6.0" "@noble/hashes": "npm:^1.8.0" "@types/jest": "npm:^27.4.1" "@types/punycode": "npm:^2.1.0" @@ -4513,7 +4513,7 @@ __metadata: "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/base-controller": "npm:^8.4.0" "@metamask/signature-controller": "npm:^34.0.0" - "@metamask/transaction-controller": "npm:^60.5.0" + "@metamask/transaction-controller": "npm:^60.6.0" "@metamask/utils": "npm:^11.8.1" "@ts-bridge/cli": "npm:^0.6.1" "@types/jest": "npm:^27.4.1" @@ -4764,7 +4764,7 @@ __metadata: languageName: node linkType: hard -"@metamask/transaction-controller@npm:^60.5.0, @metamask/transaction-controller@workspace:packages/transaction-controller": +"@metamask/transaction-controller@npm:^60.6.0, @metamask/transaction-controller@workspace:packages/transaction-controller": version: 0.0.0-use.local resolution: "@metamask/transaction-controller@workspace:packages/transaction-controller" dependencies: @@ -4837,7 +4837,7 @@ __metadata: "@metamask/polling-controller": "npm:^14.0.0" "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/superstruct": "npm:^3.1.0" - "@metamask/transaction-controller": "npm:^60.5.0" + "@metamask/transaction-controller": "npm:^60.6.0" "@metamask/utils": "npm:^11.8.1" "@types/jest": "npm:^27.4.1" bn.js: "npm:^5.2.1"