1- import { Messenger } from '@metamask/base-controller' ;
21import {
32 ChainId ,
43 convertHexToDecimal ,
54 toHex ,
65} from '@metamask/controller-utils' ;
76import EthQuery from '@metamask/eth-query' ;
7+ import {
8+ Messenger ,
9+ MOCK_ANY_NAMESPACE ,
10+ type MessengerActions ,
11+ type MessengerEvents ,
12+ type MockAnyNamespace ,
13+ } from '@metamask/messenger' ;
814import { NetworkController , NetworkStatus } from '@metamask/network-controller' ;
915import type {
10- NetworkControllerGetEIP1559CompatibilityAction ,
11- NetworkControllerGetNetworkClientByIdAction ,
12- NetworkControllerGetStateAction ,
13- NetworkControllerNetworkDidChangeEvent ,
16+ NetworkControllerMessenger ,
1417 NetworkState ,
1518} from '@metamask/network-controller' ;
1619import type { Hex } from '@metamask/utils' ;
@@ -30,12 +33,11 @@ import {
3033} from './gas-util' ;
3134import { GAS_ESTIMATE_TYPES , GasFeeController } from './GasFeeController' ;
3235import type {
36+ GasFeeMessenger ,
3337 GasFeeState ,
34- GasFeeStateChange ,
3538 GasFeeStateEthGasPrice ,
3639 GasFeeStateFeeMarket ,
3740 GasFeeStateLegacy ,
38- GetGasFeeState ,
3941} from './GasFeeController' ;
4042
4143jest . mock ( './determineGasFeeCalculations' ) ;
@@ -48,39 +50,46 @@ const mockedDetermineGasFeeCalculations =
4850
4951const name = 'GasFeeController' ;
5052
51- type MainMessenger = Messenger <
52- | GetGasFeeState
53- | NetworkControllerGetStateAction
54- | NetworkControllerGetNetworkClientByIdAction
55- | NetworkControllerGetEIP1559CompatibilityAction ,
56- GasFeeStateChange | NetworkControllerNetworkDidChangeEvent
57- > ;
53+ type AllGasFeeControllerActions = MessengerActions < GasFeeMessenger > ;
54+ type AllGasFeeControllerEvents = MessengerEvents < GasFeeMessenger > ;
55+
56+ type AllNetworkControllerActions = MessengerActions < NetworkControllerMessenger > ;
57+ type AllNetworkControllerEvents = MessengerEvents < NetworkControllerMessenger > ;
58+
59+ type AllActions = AllGasFeeControllerActions | AllNetworkControllerActions ;
60+ type AllEvents = AllGasFeeControllerEvents | AllNetworkControllerEvents ;
5861
59- const getMessenger = ( ) : MainMessenger => {
60- return new Messenger ( ) ;
62+ type RootMessenger = Messenger < MockAnyNamespace , AllActions , AllEvents > ;
63+
64+ const getRootMessenger = ( ) : RootMessenger => {
65+ return new Messenger ( { namespace : MOCK_ANY_NAMESPACE } ) ;
6166} ;
6267
6368const setupNetworkController = async ( {
64- unrestrictedMessenger ,
69+ rootMessenger ,
6570 state,
6671 clock,
6772 initializeProvider = true ,
6873} : {
69- unrestrictedMessenger : MainMessenger ;
74+ rootMessenger : RootMessenger ;
7075 state : Partial < NetworkState > ;
7176 clock : sinon . SinonFakeTimers ;
7277 initializeProvider ?: boolean ;
7378} ) => {
74- const restrictedMessenger = unrestrictedMessenger . getRestricted ( {
75- name : 'NetworkController' ,
76- allowedActions : [ ] ,
77- allowedEvents : [ ] ,
79+ const networkControllerMessenger = new Messenger <
80+ 'NetworkController' ,
81+ MessengerActions < NetworkControllerMessenger > ,
82+ MessengerEvents < NetworkControllerMessenger > ,
83+ typeof rootMessenger
84+ > ( {
85+ namespace : 'NetworkController' ,
86+ parent : rootMessenger ,
7887 } ) ;
7988
8089 const infuraProjectId = '123' ;
8190
8291 const networkController = new NetworkController ( {
83- messenger : restrictedMessenger ,
92+ messenger : networkControllerMessenger ,
8493 state,
8594 infuraProjectId,
8695 getRpcServiceOptions : ( ) => ( {
@@ -117,16 +126,26 @@ const setupNetworkController = async ({
117126 return networkController ;
118127} ;
119128
120- const getRestrictedMessenger = ( messenger : MainMessenger ) => {
121- return messenger . getRestricted ( {
122- name,
123- allowedActions : [
129+ const getGasFeeControllerMessenger = ( rootMessenger : RootMessenger ) => {
130+ const gasFeeControllerMessenger = new Messenger <
131+ 'GasFeeController' ,
132+ AllGasFeeControllerActions ,
133+ AllGasFeeControllerEvents ,
134+ typeof rootMessenger
135+ > ( {
136+ namespace : 'GasFeeController' ,
137+ parent : rootMessenger ,
138+ } ) ;
139+ rootMessenger . delegate ( {
140+ messenger : gasFeeControllerMessenger ,
141+ actions : [
124142 'NetworkController:getState' ,
125143 'NetworkController:getNetworkClientById' ,
126144 'NetworkController:getEIP1559Compatibility' ,
127145 ] ,
128- allowedEvents : [ 'NetworkController:networkDidChange' ] ,
146+ events : [ 'NetworkController:networkDidChange' ] ,
129147 } ) ;
148+ return gasFeeControllerMessenger ;
130149} ;
131150
132151/**
@@ -282,14 +301,14 @@ describe('GasFeeController', () => {
282301 interval ?: number ;
283302 initializeNetworkProvider ?: boolean ;
284303 } = { } ) {
285- const messenger = getMessenger ( ) ;
304+ const rootMessenger = getRootMessenger ( ) ;
286305 networkController = await setupNetworkController ( {
287- unrestrictedMessenger : messenger ,
306+ rootMessenger ,
288307 state : networkControllerState ,
289308 clock,
290309 initializeProvider : initializeNetworkProvider ,
291310 } ) ;
292- const restrictedMessenger = getRestrictedMessenger ( messenger ) ;
311+ const restrictedMessenger = getGasFeeControllerMessenger ( rootMessenger ) ;
293312 gasFeeController = new GasFeeController ( {
294313 getProvider : jest . fn ( ) ,
295314 getChainId,
0 commit comments