UNPKG

hardhat

Version:

Hardhat is an extensible developer tool that helps smart contract developers increase productivity by reliably bringing together the tools they want.

45 lines (37 loc) 1.41 kB
import { EIP1193Provider, RequestArguments } from "../../../types"; import { EventEmitterWrapper } from "../../util/event-emitter"; import { InvalidInputError } from "./errors"; /** * A wrapper class that makes it easy to implement the EIP1193 (Javascript Ethereum Provider) standard. * It comes baked in with all EventEmitter methods needed, * which will be added to the provider supplied in the constructor. * It also provides the interface for the standard .request() method as an abstract method. */ export abstract class ProviderWrapper extends EventEmitterWrapper implements EIP1193Provider { constructor(protected readonly _wrappedProvider: EIP1193Provider) { super(_wrappedProvider); } public abstract request(args: RequestArguments): Promise<unknown>; /** * Extract the params from RequestArguments and optionally type them. * It defaults to an empty array if no params are found. */ protected _getParams<ParamsT extends any[] = any[]>( args: RequestArguments ): ParamsT | [] { const params = args.params; if (params === undefined) { return []; } if (!Array.isArray(params)) { // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error throw new InvalidInputError( "Hardhat Network doesn't support JSON-RPC params sent as an object" ); } return params as ParamsT; } }