/// import PollingBlockTracker from 'eth-block-tracker'; import { EventEmitter } from 'events'; import { JSONRPCResponse } from '../base-provider'; export interface BlockTrackerOptions { provider: any; pollingInterval: number; blockTracker: any; } export interface EthereumBlockObject { number: string | null; hash: string | null; parentHash: string; nonce: string | null; mixHash: string; sha3Uncles: string; logsBloom: string | null; transactionsRoot: string; stateRoot: string; receiptsRoot: string; miner: string; difficulty: string; totalDifficulty: string; size: string; extraData: string; gasLimit: string; gasUsed: string; timestamp: string; transactions: any[]; uncles: string[]; } export interface BufferBlock { number: Buffer; hash: Buffer; parentHash: Buffer; nonce: Buffer; mixHash: Buffer; sha3Uncles: Buffer; logsBloom: Buffer; transactionsRoot: Buffer; stateRoot: Buffer; receiptsRoot: Buffer; miner: Buffer; difficulty: Buffer; totalDifficulty: Buffer; size: Buffer; extraData: Buffer; gasLimit: Buffer; gasUsed: Buffer; timestamp: Buffer; transactions: any[]; } export default class BlockTracker extends EventEmitter { currentBlock?: BufferBlock; currentBlockNumber?: string; protected _blockTracker: PollingBlockTracker; private blockTimeout; private maxBlockRetries; private provider; constructor(opts: BlockTrackerOptions); start(): void; stop(): void; getLatestBlock(): Promise; protected createSubscriptions(): void; protected destroySubscriptions(): void; protected onLatest(blockNumber: string): void; protected loadBlock(blockNumber: string, callCount?: number): void; protected _getBlockByNumber(blockNumber: string): Promise; protected updateBlock(block: EthereumBlockObject): void; protected _setCurrentBlock(bufferBlock: BufferBlock): void; }