hardhat
Version:
Hardhat is an extensible developer tool that helps smart contract developers increase productivity by reliably bringing together the tools they want.
138 lines • 5.03 kB
TypeScript
import type EventEmitter from "node:events";
export interface RequestArguments {
readonly method: string;
readonly params?: readonly unknown[] | object;
}
export interface ProviderRpcError extends Error {
code: number;
data?: unknown;
}
export interface EIP1193Provider extends EventEmitter {
/**
* Sends a JSON-RPC request.
*
* @param requestArguments The arguments for the request. The first argument
* should be a string representing the method name, and the second argument
* should be an array containing the parameters. See {@link RequestArguments}.
* @returns The `result` property of the successful JSON-RPC response. See
* {@link JsonRpcResponse}.
* @throws {ProviderError} If the JSON-RPC response indicates a failure.
* @throws {HardhatError} with descriptor:
* - {@link HardhatError.ERRORS.CORE.NETWORK.INVALID_REQUEST_PARAMS} if the
* params are not an array.
* - {@link HardhatError.ERRORS.CORE.NETWORK.CONNECTION_REFUSED} if the
* connection is refused.
* - {@link HardhatError.ERRORS.CORE.NETWORK.NETWORK_TIMEOUT} if the request
* times out.
*/
request(requestArguments: RequestArguments): Promise<any>;
}
/**
* This interface is an extension of the EIP1193Provider interface with two
* additions:
* - It has `send` and `sendAsync` methods for backwards compatibility.
* - It has a `close` method to release any resources associated with the
* provider.
*/
export interface EthereumProvider extends EIP1193Provider {
/**
* Releases any resources associated with the provider.
*
* Most providers don't need to do anything in this method, but they may
* opt to use it to release resources such as a connection pool.
*
* Note that Hardhat doesn't automatically call this method, so a provider
* shouldn't rely on it being called.
*/
close(): Promise<void>;
/**
* @deprecated
* Sends a JSON-RPC request. This method is present for backwards compatibility
* with the Legacy Provider API. Prefer using {@link request} instead.
*
* @param method The method name for the JSON-RPC request.
* @param params The parameters for the JSON-RPC request. This should be an
* array of values.
* @returns The `result` property of the successful JSON-RPC response. See
* {@link JsonRpcResponse}.
* @throws {ProviderError} If the JSON-RPC response indicates a failure.
* @throws {HardhatError} with descriptor:
* - {@link HardhatError.ERRORS.CORE.NETWORK.INVALID_REQUEST_PARAMS} if the
* params are not an array.
* - {@link HardhatError.ERRORS.CORE.NETWORK.CONNECTION_REFUSED} if the
* connection is refused.
* - {@link HardhatError.ERRORS.CORE.NETWORK.NETWORK_TIMEOUT} if the request
* times out.
*/
send(method: string, params?: unknown[]): Promise<any>;
/**
* @deprecated
* Sends a JSON-RPC request asynchronously. This method is present for
* backwards compatibility with the Legacy Provider API. Prefer using
* {@link request} instead.
*
* @param jsonRpcRequest The JSON-RPC request object.
* @param callback The callback function to handle the response. The first
* argument should be an error object if an error occurred, and the second
* argument should be the JSON-RPC response object.
*/
sendAsync(jsonRpcRequest: JsonRpcRequest, callback: (error: any, jsonRpcResponse: JsonRpcResponse) => void): void;
}
/**
* A message emitted by the provider as a result of an eth_subscription.
*/
export interface EthSubscription {
readonly type: "eth_subscription";
readonly data: {
readonly subscription: string;
readonly result: unknown;
};
}
/**
* A JSON-RPC 2.0 request object.
*
* For typing a JSON-RPC notification request, use `JsonRpcNotificationRequest`.
*
* Although the `params` field can be an object according to the specification,
* we only support arrays. The interface remains unchanged to comply with the
* standard, and to be type-compatible JSON-RPC requests not created by us.
*/
export interface JsonRpcRequest {
jsonrpc: "2.0";
id: number | string;
method: string;
params?: unknown[] | object;
}
/**
* A JSON-RPC 2.0 notification request object.
*/
export interface JsonRpcNotificationRequest {
jsonrpc: "2.0";
method: string;
params?: unknown[] | object;
}
/**
* A successful JSON-RPC 2.0 response object.
*/
export interface SuccessfulJsonRpcResponse {
jsonrpc: "2.0";
id: number | string;
result: unknown;
}
/**
* A failed JSON-RPC 2.0 response object.
*/
export interface FailedJsonRpcResponse {
jsonrpc: "2.0";
id: number | string | null;
error: {
code: number;
message: string;
data?: unknown;
};
}
/**
* A JSON-RPC 2.0 response object.
*/
export type JsonRpcResponse = SuccessfulJsonRpcResponse | FailedJsonRpcResponse;
//# sourceMappingURL=providers.d.ts.map