@@ -19,8 +19,10 @@ import {
1919 SnapEndowments ,
2020} from '@metamask/snaps-rpc-methods' ;
2121import {
22+ createPermissionMiddleware ,
2223 RequestedPermissions ,
2324 SubjectType ,
25+ type PermissionMiddlewareActions ,
2426} from '@metamask/permission-controller' ;
2527import { providerAsMiddleware } from '@metamask/eth-json-rpc-middleware' ;
2628import { createEngineStream } from '@metamask/json-rpc-middleware-stream' ;
@@ -53,6 +55,7 @@ import {
5355} from '../RPCMethods/utils' ;
5456import { MultichainRoutingService } from '@metamask/snaps-controllers' ;
5557import { asLegacyMiddleware } from '@metamask/json-rpc-engine/v2' ;
58+ import { Messenger } from '@metamask/messenger' ;
5659
5760/**
5861 * Type definition for the GetRPCMethodMiddleware function.
@@ -167,9 +170,25 @@ export default class SnapBridge {
167170 // @ts -expect-error: Type mismatch.
168171 engine . push ( asLegacyMiddleware ( createWalletSnapPermissionMiddleware ( ) ) ) ;
169172
173+ const permissionMessenger = new Messenger <
174+ 'PermissionMiddleware' ,
175+ PermissionMiddlewareActions
176+ > ( {
177+ namespace : 'PermissionMessenger' ,
178+ parent : controllerMessenger ,
179+ } ) ;
180+ controllerMessenger . delegate ( {
181+ messenger : permissionMessenger ,
182+ actions : [
183+ 'PermissionController:executeRestrictedMethod' ,
184+ 'PermissionController:hasUnrestrictedMethod' ,
185+ ] ,
186+ } ) ;
187+
170188 engine . push (
171- PermissionController . createPermissionMiddleware ( {
189+ createPermissionMiddleware ( {
172190 origin : this . #snapId,
191+ messenger : permissionMessenger ,
173192 } ) ,
174193 ) ;
175194
0 commit comments