/// <reference types="node" />
import { Commitment, Connection } from '@solana/web3.js';
import { EventEmitter } from 'events';
import StrictEventEmitter from 'strict-event-emitter-types/types/src';
type ClockSubscriberConfig = {
    commitment: Commitment;
    resubTimeoutMs?: number;
};
export interface ClockSubscriberEvent {
    clockUpdate: (ts: number) => void;
}
export declare class ClockSubscriber {
    private connection;
    private _latestSlot;
    private _currentTs;
    private subscriptionId;
    commitment: Commitment;
    eventEmitter: StrictEventEmitter<EventEmitter, ClockSubscriberEvent>;
    get latestSlot(): number;
    get currentTs(): number;
    private timeoutId?;
    private resubTimeoutMs?;
    private isUnsubscribing;
    private receivingData;
    constructor(connection: Connection, config?: ClockSubscriberConfig);
    subscribe(): Promise<void>;
    private setTimeout;
    getUnixTs(): number;
    unsubscribe(onResub?: boolean): Promise<void>;
}
export {};
