@@ -2,7 +2,10 @@ import { PollingBlockTracker } from '@metamask/eth-block-tracker';
22import { InternalProvider } from '@metamask/eth-json-rpc-provider' ;
33import { JsonRpcEngine } from '@metamask/json-rpc-engine' ;
44import { JsonRpcEngineV2 } from '@metamask/json-rpc-engine/v2' ;
5- import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine/v2' ;
5+ import type {
6+ JsonRpcMiddleware ,
7+ ResultConstraint ,
8+ } from '@metamask/json-rpc-engine/v2' ;
69import type { Json , JsonRpcParams , JsonRpcRequest } from '@metamask/utils' ;
710import { klona } from 'klona/full' ;
811import { isDeepStrictEqual } from 'util' ;
@@ -113,6 +116,10 @@ export function createProviderAndBlockTracker(): {
113116 return { provider, blockTracker } ;
114117}
115118
119+ // An expedient for use with createEngine below.
120+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
121+ type AnyMiddleware = JsonRpcMiddleware < any , ResultConstraint < any > , any > ;
122+
116123/**
117124 * Creates a JSON-RPC engine with the middleware under test and any
118125 * additional middleware. If no other middleware is provided, a final middleware
@@ -123,8 +130,8 @@ export function createProviderAndBlockTracker(): {
123130 * @returns The created engine.
124131 */
125132export function createEngine (
126- middlewareUnderTest : JsonRpcMiddleware < any , any > ,
127- ...otherMiddleware : JsonRpcMiddleware < any , any > [ ]
133+ middlewareUnderTest : AnyMiddleware ,
134+ ...otherMiddleware : AnyMiddleware [ ]
128135) : JsonRpcEngineV2 {
129136 return JsonRpcEngineV2 . create ( {
130137 middleware : [
@@ -258,10 +265,10 @@ export function expectProviderRequestNotToHaveBeenMade(
258265 * @returns The Jest spy object that represents `provider.request` (so that
259266 * you can make assertions on the method later, if you like).
260267 */
261- export function stubProviderRequests (
262- provider : InternalProvider ,
263- stubs : ProviderRequestStub < any , Json > [ ] ,
264- ) {
268+ export function stubProviderRequests <
269+ Params extends JsonRpcParams = JsonRpcParams ,
270+ Result extends Json = Json ,
271+ > ( provider : InternalProvider , stubs : ProviderRequestStub < Params , Result > [ ] ) {
265272 const remainingStubs = klona ( stubs ) ;
266273 const callNumbersByRequest = new Map < Partial < JsonRpcRequest > , number > ( ) ;
267274 return jest . spyOn ( provider , 'request' ) . mockImplementation ( async ( request ) => {
0 commit comments