eth-provider-types
TypeScript icon, indicating that this package has built-in type declarations

0.2.1 • Public • Published

eth-provider-types

This package provides types for Ethereum JSON RPC APIs. This includes:

import {
  // The ethereum provider API interface, per EIP-1193 (https://eips.ethereum.org/EIPS/eip-1193#appendix-i-consumer-facing-api-documentation)
  EthProvider,

  /*** Enums ***/
  EthMethod, // All ethereum RPC method names
  EthEvent, // All standard event names emitted by the provider
  EthProviderMessageType, // All types of messages sent by the `message` event
  EthProviderRpcErrorCode, // Error codes
  EthBlockNumberTag, // Block tags e.g. 'latest', 'earliest', 'pending

  /*** Mappings ***/
  EthMethodParams, // Mapping from EthMethod -> method parameters
  EthMethodResults, // Mapping from EthMethod -> method results
  EthEventParams, // Mapping from EthEvent -> Event parameters
  EthProviderMessageData, // Mapping from EthProviderMessageType -> message data

  /*** Interfaces ***/

  // Ethereum transaction received from RPC (e.g. getTransactionByHash).
  // This is the union of EthTransactionComplete and EthTransactionPending.
  EthTransaction,
  EthTransactionComplete, // Completed transaction (block number, etc, are NOT null)
  EthTransactionPending, // Pending transaction (block number, etc. ARE null)
  EthTransactionSend, // Transaction partial passed to eth_sendTransaction, eth_signTransaction
  EthTransactionCall, // Transaction partial passed to eth_call
  EthTransactionReceipt,

  // Ethereum block received from RPC (e.g. getBlockByHash).
  // This is the union of EthBlockComplete and EthBlockPending.
  EthBlock,
  EthBlockComplete, // Completed block (block number, etc. are NOT null)
  EthBlockPending, // Pending block (block number, etc. ARE null)

  // Ethereum log received from RPC (e.g. getLogs)
  // This is the union of EthLogComplete and EthLogPending.
  EthLog,
  EthLogComplete, // Completed log (block number, etc. are NOT null)
  EthLogPending, // Pending log (block number, etc. ARE null)

  // Other
  EthProviderMessage,
  EthProviderRpcError,
  EthProviderConnectInfo,
} from 'eth-provider-types';

You can use these types to create an Ethereum provider that is strongly typed:

import { EthProvider, EthMethod, EthTransactionReceipt } from 'eth-json-rpc-types';

class MyProvider implements EthProvider {
  request({ method, params }) {
    // ...
  }

  // ...
}

const provider = new MyProvider();

// Results and parameters are both typed based on EthMethod passed into `request`
const eth_accounts: string[] = provider.request({ method: EthMethod.eth_accounts });
const eth_getTransactionReceipt: EthTransactionReceipt = provider.request({
  method: EthMethod.eth_accounts,
  params: ['0x0...'],
});

// This will throw type errors because it has incorrect parameters
const eth_getBlockByHash = provider.request({
  method: EthMethod.eth_getBlockByHash,
  params: [123],
});

Readme

Keywords

none

Package Sidebar

Install

npm i eth-provider-types

Weekly Downloads

21

Version

0.2.1

License

ISC

Unpacked Size

39.7 kB

Total Files

6

Last publish

Collaborators

  • imthinhvu