import { CurriedFunction2 } from 'ramda'; import { RpcMethod, RpcRequest } from './rpc-methods'; import { Observable } from 'rxjs'; import { BigNumber } from 'bignumber.js'; export declare type ProviderBound = T extends (provider: Provider) => infer Result ? () => Result : T extends CurriedFunction2 ? (arg: A1) => Result : never; export declare type RpcSend = (payload: Request | Request[]) => Promise['response']>; export interface LegacyProvider { sendAsync: (payload: any, cb: any) => void; } export interface Provider { send: RpcSend; observe: (subscriptionId: string) => Observable; disconnect: () => void; } export interface Subprovider extends Provider { accept: (req: RpcRequest) => boolean; } export declare type SendObservableRequest = (payload: Request | Request[]) => Observable['response']['result']>; export declare type SendRequest = (payload: Request | Request[]) => Promise['response']['result']>; export interface FilterObject { fromBlock?: number | string; toBlock?: number | string; address?: string | string[]; topics?: (string | string[])[]; } export declare type NumberLike = string | number | BigNumber; export interface RequestInputParams { from?: string; to?: string; gas?: NumberLike; gasPrice?: NumberLike; value?: NumberLike; data?: string; } export interface LogFilter { address?: string | string[]; topics?: (string | string[])[]; } export interface NewHeadsOptions { includeTransactions?: boolean; } export interface NewHeadsArgs { type: 'newHeads'; args?: NewHeadsOptions; } export interface LogsArgs { type: 'logs'; args: LogFilter; } export interface NewPendingTransactionsArgs { type: 'newPendingTransactions'; } export interface SyncingArgs { type: 'syncing'; } export declare type SubscribeArgs = NewHeadsArgs | LogsArgs | NewPendingTransactionsArgs | SyncingArgs; export declare type Omit = Pick>;