11import { InternalProvider } from '@metamask/eth-json-rpc-provider' ;
2- import { JsonRpcEngine } from '@metamask/json-rpc-engine' ;
2+ import {
3+ JsonRpcEngineV2 ,
4+ type JsonRpcMiddleware ,
5+ type MiddlewareContext ,
6+ type ResultConstraint ,
7+ } from '@metamask/json-rpc-engine/v2' ;
8+ import type { Provider } from '@metamask/network-controller' ;
39import type {
410 Json ,
511 JsonRpcId ,
612 JsonRpcParams ,
13+ JsonRpcRequest ,
714 JsonRpcResponse ,
815 JsonRpcVersion2 ,
916} from '@metamask/utils' ;
@@ -91,6 +98,15 @@ type FakeProviderEngineOptions = {
9198 stubs ?: FakeProviderStub [ ] ;
9299} ;
93100
101+ type Context = MiddlewareContext <
102+ { origin : string ; skipCache : boolean } & Record < string , unknown >
103+ > ;
104+ type Middleware = JsonRpcMiddleware <
105+ JsonRpcRequest ,
106+ ResultConstraint < JsonRpcRequest > ,
107+ Context
108+ > ;
109+
94110/**
95111 * An implementation of the provider that NetworkController exposes, which is
96112 * actually an instance of InternalProvider (from the
@@ -102,7 +118,10 @@ type FakeProviderEngineOptions = {
102118// NOTE: We shouldn't need to extend from the "real" provider here, but
103119// we'd need a `InternalProvider` _interface_ and that doesn't exist (at
104120// least not yet).
105- export class FakeProvider extends InternalProvider {
121+ export class FakeProvider
122+ extends InternalProvider < Context >
123+ implements Provider
124+ {
106125 calledStubs : FakeProviderStub [ ] ;
107126
108127 #originalStubs: FakeProviderStub [ ] ;
@@ -117,7 +136,15 @@ export class FakeProvider extends InternalProvider {
117136 * of specific invocations of `request` matching a `method`.
118137 */
119138 constructor ( { stubs = [ ] } : FakeProviderEngineOptions = { } ) {
120- super ( { engine : new JsonRpcEngine ( ) } ) ;
139+ super ( {
140+ engine : JsonRpcEngineV2 . create < Middleware > ( {
141+ middleware : [
142+ ( ) => {
143+ throw new Error ( 'FakeProvider received unstubbed method call' ) ;
144+ } ,
145+ ] ,
146+ } ) ,
147+ } ) ;
121148 this . #originalStubs = stubs ;
122149 this . #stubs = this . #originalStubs. slice ( ) ;
123150 this . calledStubs = [ ] ;
0 commit comments