diff --git a/packages/web3-core/types/index.d.ts b/packages/web3-core/types/index.d.ts index fd76ae6fbea..97ba5635eef 100644 --- a/packages/web3-core/types/index.d.ts +++ b/packages/web3-core/types/index.d.ts @@ -19,12 +19,15 @@ */ import * as net from 'net'; +import { EventEmitter } from "events" import { HttpProviderBase, HttpProviderOptions, IpcProviderBase, WebsocketProviderBase, - WebsocketProviderOptions + WebsocketProviderOptions, + JsonRpcPayload, + JsonRpcResponse } from 'web3-core-helpers'; import { Method } from 'web3-core-method'; import BN = require('bn.js'); @@ -408,9 +411,15 @@ export interface LogsOptions { export type BlockNumber = string | number | BN | BigNumber | 'latest' | 'pending' | 'earliest' | 'genesis'; +export interface AbstractProvider { + send(payload: JsonRpcPayload, callback: (error: Error | null, result?: JsonRpcResponse) => void): void; + sendAsync(payload: JsonRpcPayload, callback: (error: Error | null, result?: JsonRpcResponse) => void): void; + } + export type provider = | HttpProvider | IpcProvider | WebsocketProvider + | AbstractProvider | string | null; diff --git a/packages/web3/types/tests/web3-test.ts b/packages/web3/types/tests/web3-test.ts index 7aaeaafc6b0..f17985861ce 100644 --- a/packages/web3/types/tests/web3-test.ts +++ b/packages/web3/types/tests/web3-test.ts @@ -19,6 +19,9 @@ import Web3 from 'web3'; import * as net from 'net'; +import { AbstractProvider } from 'web3-core'; +import { JsonRpcPayload, JsonRpcResponse } from "web3-core-helpers" +import { EventEmitter } from 'events'; // $ExpectType Utils Web3.utils; @@ -85,3 +88,10 @@ web3 = new Web3('https://localhost:5000/', netSocket); // $ExpectType Web3 web3 = new Web3(); + +class CustomProvider implements AbstractProvider { + send(payload: JsonRpcPayload, callback: (error: Error | null, result?: JsonRpcResponse) => void) {} + sendAsync(payload: JsonRpcPayload, callback: (error: Error | null, result?: JsonRpcResponse) => void) {} +} +// $ExpectType Web3 +web3 = new Web3(new CustomProvider());