/// <reference types="node" />
import { EventEmitter } from 'events';
export declare const SECOND = 1000;
export interface Options {
    blockResetDuration?: number;
}
export declare type Block = any;
export declare abstract class BaseBlockTracker extends EventEmitter {
    private readonly _blockResetDuration;
    private _blockResetTimeout;
    private _currentBlock;
    private _isRunning;
    protected constructor(opts?: Options);
    isRunning(): boolean;
    getCurrentBlock(): Block | null;
    getLatestBlock(): Promise<Block>;
    removeAllListeners(eventName?: string | symbol | undefined): this;
    abstract _start(): void;
    abstract _end(): void;
    private _setupInternalEvents;
    private _onNewListener;
    private _onRemoveListener;
    private _maybeStart;
    private _maybeEnd;
    private _getBlockTrackerEventCount;
    protected _newPotentialLatest(newBlock: Block): void;
    private _setCurrentBlock;
    private _setupBlockResetTimeout;
    private _cancelBlockResetTimeout;
    private _resetCurrentBlock;
}
//# sourceMappingURL=base.d.ts.map