From 8b3a2f7cada4be39df085644847b86b49aa754e8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 16 Oct 2026 12:02:45 +0000 Subject: [PATCH 1/3] chore(deps-dev): bump @metamask/messenger from 2.0.0 to 3.0.0 Bumps [@metamask/messenger](https://github.com/MetaMask/core) from 2.0.0 to 3.0.0. - [Release notes](https://github.com/MetaMask/core/releases) - [Commits](https://github.com/MetaMask/core/compare/@metamask/messenger@2.0.0...@metamask/messenger@3.0.0) --- updated-dependencies: - dependency-name: "@metamask/messenger" dependency-version: 3.0.0 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- packages/snap-networks-utils/package.json | 2 +- packages/tron-wallet-snap/package.json | 2 +- yarn.lock | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/snap-networks-utils/package.json b/packages/snap-networks-utils/package.json index 3923e18d..7e6e6348 100644 --- a/packages/snap-networks-utils/package.json +++ b/packages/snap-networks-utils/package.json @@ -73,7 +73,7 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.2.1", - "@metamask/messenger": "^2.0.0", + "@metamask/messenger": "^3.0.0", "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "@types/lodash": "^4.17.15", diff --git a/packages/tron-wallet-snap/package.json b/packages/tron-wallet-snap/package.json index 59694b17..1b02a4c3 100644 --- a/packages/tron-wallet-snap/package.json +++ b/packages/tron-wallet-snap/package.json @@ -53,7 +53,7 @@ "@metamask/key-tree": "^10.1.1", "@metamask/keyring-api": "^24.1.0", "@metamask/keyring-snap-sdk": "^10.0.0", - "@metamask/messenger": "^2.0.0", + "@metamask/messenger": "^3.0.0", "@metamask/remote-feature-flag-controller": "^5.0.0", "@metamask/snap-networks-utils": "^3.0.0", "@metamask/snaps-cli": "^8.4.1", diff --git a/yarn.lock b/yarn.lock index e03222de..dd67db55 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3447,7 +3447,7 @@ __metadata: "@metamask/base-data-service": "npm:^2.1.0" "@metamask/keyring-api": "npm:^24.1.0" "@metamask/keyring-internal-api": "npm:^12.0.0" - "@metamask/messenger": "npm:^2.0.0" + "@metamask/messenger": "npm:^3.0.0" "@metamask/remote-feature-flag-controller": "npm:^5.0.0" "@metamask/snaps-sdk": "npm:^12.0.1" "@metamask/superstruct": "npm:^3.4.1" @@ -3983,7 +3983,7 @@ __metadata: "@metamask/key-tree": "npm:^10.1.1" "@metamask/keyring-api": "npm:^24.1.0" "@metamask/keyring-snap-sdk": "npm:^10.0.0" - "@metamask/messenger": "npm:^2.0.0" + "@metamask/messenger": "npm:^3.0.0" "@metamask/remote-feature-flag-controller": "npm:^5.0.0" "@metamask/snap-networks-utils": "npm:^3.0.0" "@metamask/snaps-cli": "npm:^8.4.1" From 9d9a67c8d803525d6bb4d45eed34813e6f2108d0 Mon Sep 17 00:00:00 2001 From: Frederic HENG Date: Fri, 16 Oct 2026 11:24:55 +0200 Subject: [PATCH 2/3] fix: avoid incompatible messenger type identities --- packages/snap-networks-utils/package.json | 1 - .../src/providers/assets/AssetsProvider.ts | 38 +++++++++++++-- .../RemoteFeatureFlagsProvider.ts | 46 +++++++++++++++---- packages/tron-wallet-snap/package.json | 1 - packages/tron-wallet-snap/src/context.ts | 7 +-- .../src/types/core-messenger.ts | 36 +++++++++++---- yarn.lock | 2 - 7 files changed, 101 insertions(+), 30 deletions(-) diff --git a/packages/snap-networks-utils/package.json b/packages/snap-networks-utils/package.json index 7e6e6348..7bd4f3f1 100644 --- a/packages/snap-networks-utils/package.json +++ b/packages/snap-networks-utils/package.json @@ -73,7 +73,6 @@ }, "devDependencies": { "@metamask/auto-changelog": "^6.2.1", - "@metamask/messenger": "^3.0.0", "@ts-bridge/cli": "^0.6.4", "@types/jest": "^30.0.0", "@types/lodash": "^4.17.15", diff --git a/packages/snap-networks-utils/src/providers/assets/AssetsProvider.ts b/packages/snap-networks-utils/src/providers/assets/AssetsProvider.ts index 4d663b10..aa6b906e 100644 --- a/packages/snap-networks-utils/src/providers/assets/AssetsProvider.ts +++ b/packages/snap-networks-utils/src/providers/assets/AssetsProvider.ts @@ -8,8 +8,6 @@ import type { Caip19AssetId, } from '@metamask/assets-controller'; import type { InternalAccount } from '@metamask/keyring-internal-api'; -import type { Messenger } from '@metamask/messenger'; -import { AsyncMessenger } from '@metamask/snaps-sdk'; import type { CaipChainId } from '@metamask/utils'; /** @@ -27,12 +25,42 @@ export type AssetsProviderAllowedActions = | AssetsControllerGetAssetMetadataAction | AssetsControllerGetAssetsAction; +type ExtractActionParameters< + Action extends AssetsProviderAllowedActions, + ActionType extends Action['type'], +> = Action extends { + type: ActionType; + handler: (...args: infer HandlerArgs) => unknown; +} + ? HandlerArgs + : never; + +type ExtractActionResponse< + Action extends AssetsProviderAllowedActions, + ActionType extends Action['type'], +> = Action extends { + type: ActionType; + handler: (...args: never[]) => infer HandlerReturnValue; +} + ? HandlerReturnValue + : never; + /** * Messenger restricted to actions consumed by {@link AssetsProvider}. */ -export type AssetsProviderMessenger = AsyncMessenger< - Messenger ->; +export type AssetsProviderMessenger = { + call: ( + actionType: ActionType, + ...params: ExtractActionParameters< + AssetsProviderAllowedActions, + ActionType + > + ) => Promise< + Awaited< + ExtractActionResponse + > + >; +}; export class AssetsProvider { readonly #messenger: AssetsProviderMessenger; diff --git a/packages/snap-networks-utils/src/providers/remote-feature-flags/RemoteFeatureFlagsProvider.ts b/packages/snap-networks-utils/src/providers/remote-feature-flags/RemoteFeatureFlagsProvider.ts index f73265f0..28dddfa2 100644 --- a/packages/snap-networks-utils/src/providers/remote-feature-flags/RemoteFeatureFlagsProvider.ts +++ b/packages/snap-networks-utils/src/providers/remote-feature-flags/RemoteFeatureFlagsProvider.ts @@ -1,6 +1,4 @@ -import type { Messenger } from '@metamask/messenger'; import type { RemoteFeatureFlagControllerGetStateAction } from '@metamask/remote-feature-flag-controller'; -import { AsyncMessenger } from '@metamask/snaps-sdk'; import type { Json } from '@metamask/utils'; /** @@ -15,15 +13,47 @@ export const REMOTE_FEATURE_FLAGS_PROVIDER_NAME = export type RemoteFeatureFlagsProviderAllowedActions = RemoteFeatureFlagControllerGetStateAction; +type ExtractActionParameters< + Action extends RemoteFeatureFlagsProviderAllowedActions, + ActionType extends Action['type'], +> = Action extends { + type: ActionType; + handler: (...args: infer HandlerArgs) => unknown; +} + ? HandlerArgs + : never; + +type ExtractActionResponse< + Action extends RemoteFeatureFlagsProviderAllowedActions, + ActionType extends Action['type'], +> = Action extends { + type: ActionType; + handler: (...args: never[]) => infer HandlerReturnValue; +} + ? HandlerReturnValue + : never; + /** * Messenger restricted to actions consumed by {@link RemoteFeatureFlagsProvider}. */ -export type RemoteFeatureFlagsProviderMessenger = AsyncMessenger< - Messenger< - typeof REMOTE_FEATURE_FLAGS_PROVIDER_NAME, - RemoteFeatureFlagsProviderAllowedActions - > ->; +export type RemoteFeatureFlagsProviderMessenger = { + call: < + ActionType extends RemoteFeatureFlagsProviderAllowedActions['type'], + >( + actionType: ActionType, + ...params: ExtractActionParameters< + RemoteFeatureFlagsProviderAllowedActions, + ActionType + > + ) => Promise< + Awaited< + ExtractActionResponse< + RemoteFeatureFlagsProviderAllowedActions, + ActionType + > + > + >; +}; export class RemoteFeatureFlagsProvider { readonly #messenger: RemoteFeatureFlagsProviderMessenger; diff --git a/packages/tron-wallet-snap/package.json b/packages/tron-wallet-snap/package.json index 1b02a4c3..cf801ba6 100644 --- a/packages/tron-wallet-snap/package.json +++ b/packages/tron-wallet-snap/package.json @@ -53,7 +53,6 @@ "@metamask/key-tree": "^10.1.1", "@metamask/keyring-api": "^24.1.0", "@metamask/keyring-snap-sdk": "^10.0.0", - "@metamask/messenger": "^3.0.0", "@metamask/remote-feature-flag-controller": "^5.0.0", "@metamask/snap-networks-utils": "^3.0.0", "@metamask/snaps-cli": "^8.4.1", diff --git a/packages/tron-wallet-snap/src/context.ts b/packages/tron-wallet-snap/src/context.ts index d115ec7c..5e87510e 100644 --- a/packages/tron-wallet-snap/src/context.ts +++ b/packages/tron-wallet-snap/src/context.ts @@ -44,10 +44,7 @@ import { TransactionScanService } from './services/transaction-scan/TransactionS import { TransactionsRepository } from './services/transactions/TransactionsRepository'; import { TransactionsService } from './services/transactions/TransactionsService'; import { WalletService } from './services/wallet/WalletService'; -import type { - CoreMessenger, - CoreMessengerClient, -} from './types/core-messenger'; +import type { CoreMessengerClient } from './types/core-messenger'; import { trackError } from './utils/errors'; import logger, { noOpLogger } from './utils/logger'; @@ -104,7 +101,7 @@ const tokenApiClient = new TokenApiClient(configProvider); /** * Core controllers plumbing */ -const coreMessenger = getMessenger(); +const coreMessenger = getMessenger() as CoreMessengerClient; const remoteFeatureFlagsProvider = new RemoteFeatureFlagsProvider({ messenger: coreMessenger as RemoteFeatureFlagsProviderMessenger, }); diff --git a/packages/tron-wallet-snap/src/types/core-messenger.ts b/packages/tron-wallet-snap/src/types/core-messenger.ts index fdb3a44c..dc664654 100644 --- a/packages/tron-wallet-snap/src/types/core-messenger.ts +++ b/packages/tron-wallet-snap/src/types/core-messenger.ts @@ -4,9 +4,7 @@ import type { AssetsControllerGetAccountAssetsByScopeAction, AssetsControllerGetAssetsAction, } from '@metamask/assets-controller'; -import type { Messenger } from '@metamask/messenger'; import type { RemoteFeatureFlagControllerGetStateAction } from '@metamask/remote-feature-flag-controller'; -import type { AsyncMessenger } from '@metamask/snaps-sdk'; /** * Namespace for this Snap's Core messenger endowment. @@ -20,19 +18,41 @@ export type CoreMessengerActions = | AssetsControllerGetAccountAssetsByScopeAction | AssetsControllerGetAssetsAction; +type ExtractActionParameters< + Action extends CoreMessengerActions, + ActionType extends Action['type'], +> = Action extends { + type: ActionType; + handler: (...args: infer HandlerArgs) => unknown; +} + ? HandlerArgs + : never; + +type ExtractActionResponse< + Action extends CoreMessengerActions, + ActionType extends Action['type'], +> = Action extends { + type: ActionType; + handler: (...args: never[]) => infer HandlerReturnValue; +} + ? HandlerReturnValue + : never; + /** * Messenger type passed to `getMessenger` for Core controller actions. */ -export type CoreMessenger = Messenger< - typeof TRON_WALLET_SNAP_MESSENGER_NAMESPACE, - CoreMessengerActions ->; - /** * Async messenger returned by `getMessenger` for Core controller actions * available to this Snap via `endowment:messenger`. */ -export type CoreMessengerClient = AsyncMessenger; +export type CoreMessengerClient = { + call: ( + actionType: ActionType, + ...params: ExtractActionParameters + ) => Promise< + Awaited> + >; +}; /** * Narrow dependency for services that only need to invoke Core actions. diff --git a/yarn.lock b/yarn.lock index dd67db55..18651799 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3447,7 +3447,6 @@ __metadata: "@metamask/base-data-service": "npm:^2.1.0" "@metamask/keyring-api": "npm:^24.1.0" "@metamask/keyring-internal-api": "npm:^12.0.0" - "@metamask/messenger": "npm:^3.0.0" "@metamask/remote-feature-flag-controller": "npm:^5.0.0" "@metamask/snaps-sdk": "npm:^12.0.1" "@metamask/superstruct": "npm:^3.4.1" @@ -3983,7 +3982,6 @@ __metadata: "@metamask/key-tree": "npm:^10.1.1" "@metamask/keyring-api": "npm:^24.1.0" "@metamask/keyring-snap-sdk": "npm:^10.0.0" - "@metamask/messenger": "npm:^3.0.0" "@metamask/remote-feature-flag-controller": "npm:^5.0.0" "@metamask/snap-networks-utils": "npm:^3.0.0" "@metamask/snaps-cli": "npm:^8.4.1" From 5608d2ee9ab1be9e4f3b5063a814f6dfcc95323f Mon Sep 17 00:00:00 2001 From: Frederic HENG Date: Fri, 16 Oct 2026 15:09:24 +0200 Subject: [PATCH 3/3] chore: format messenger compatibility types --- .../src/providers/assets/AssetsProvider.ts | 9 ++------- .../remote-feature-flags/RemoteFeatureFlagsProvider.ts | 4 +--- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/packages/snap-networks-utils/src/providers/assets/AssetsProvider.ts b/packages/snap-networks-utils/src/providers/assets/AssetsProvider.ts index aa6b906e..6649d811 100644 --- a/packages/snap-networks-utils/src/providers/assets/AssetsProvider.ts +++ b/packages/snap-networks-utils/src/providers/assets/AssetsProvider.ts @@ -51,14 +51,9 @@ type ExtractActionResponse< export type AssetsProviderMessenger = { call: ( actionType: ActionType, - ...params: ExtractActionParameters< - AssetsProviderAllowedActions, - ActionType - > + ...params: ExtractActionParameters ) => Promise< - Awaited< - ExtractActionResponse - > + Awaited> >; }; diff --git a/packages/snap-networks-utils/src/providers/remote-feature-flags/RemoteFeatureFlagsProvider.ts b/packages/snap-networks-utils/src/providers/remote-feature-flags/RemoteFeatureFlagsProvider.ts index 28dddfa2..fc0d410e 100644 --- a/packages/snap-networks-utils/src/providers/remote-feature-flags/RemoteFeatureFlagsProvider.ts +++ b/packages/snap-networks-utils/src/providers/remote-feature-flags/RemoteFeatureFlagsProvider.ts @@ -37,9 +37,7 @@ type ExtractActionResponse< * Messenger restricted to actions consumed by {@link RemoteFeatureFlagsProvider}. */ export type RemoteFeatureFlagsProviderMessenger = { - call: < - ActionType extends RemoteFeatureFlagsProviderAllowedActions['type'], - >( + call: ( actionType: ActionType, ...params: ExtractActionParameters< RemoteFeatureFlagsProviderAllowedActions,