/// <reference types="node" />
import WebSocket from 'ws';
import { EventEmitter } from 'events';
import { Deferred } from '../../utils/deferred';
import { Send } from '../../types/blockbook';
import { GetFiatRatesForTimestamps, GetFiatRatesTickersList, AccountInfoParams, EstimateFeeParams, AccountBalanceHistoryParams, GetCurrentFiatRates } from '../../types/messages';
interface Subscription {
    id: string;
    type: 'notification' | 'block' | 'fiatRates';
    callback: (result: any) => void;
}
interface Options {
    url: string;
    timeout?: number;
    pingTimeout?: number;
    keepAlive?: boolean;
}
export default class Socket extends EventEmitter {
    options: Options;
    ws: WebSocket | undefined;
    messageID: number;
    messages: Deferred<any>[];
    subscriptions: Subscription[];
    pingTimeout: ReturnType<typeof setTimeout> | undefined;
    connectionTimeout: ReturnType<typeof setTimeout> | undefined;
    constructor(options: Options);
    setConnectionTimeout(): void;
    clearConnectionTimeout(): void;
    setPingTimeout(): void;
    onTimeout(): void;
    onPing(): Promise<void>;
    onError(): void;
    send: Send;
    onmessage(message: string): void;
    connect(): Promise<void>;
    init(): void;
    disconnect(): void;
    isConnected(): boolean | undefined;
    getServerInfo(): Promise<import("../../types/blockbook").ServerInfo>;
    getBlockHash(block: number): Promise<import("../../types/blockbook").BlockHash>;
    getAccountInfo(payload: AccountInfoParams): Promise<import("../../types/blockbook").AccountInfo>;
    getAccountUtxo(descriptor: string): Promise<import("../../types/blockbook").AccountUtxo>;
    getTransaction(txid: string): Promise<import("../../types/blockbook").Transaction>;
    pushTransaction(hex: string): Promise<import("../../types/blockbook").Push>;
    estimateFee(payload: EstimateFeeParams): Promise<import("../../types/blockbook").Fee>;
    getCurrentFiatRates(payload: GetCurrentFiatRates['payload']): Promise<import("../../types/blockbook").TimestampedFiatRates>;
    getAccountBalanceHistory(payload: AccountBalanceHistoryParams): Promise<import("../../types/blockbook").AccountBalanceHistory[]>;
    getFiatRatesForTimestamps(payload: GetFiatRatesForTimestamps['payload']): Promise<import("../../types/blockbook").FiatRatesForTimestamp>;
    getFiatRatesTickersList(payload: GetFiatRatesTickersList['payload']): Promise<import("../../types/blockbook").AvailableCurrencies>;
    subscribeAddresses(addresses: string[]): Promise<import("../../types/blockbook").Subscribe>;
    unsubscribeAddresses(): Promise<import("../../types/blockbook").Subscribe> | {
        subscribed: boolean;
    };
    subscribeBlock(): Promise<import("../../types/blockbook").Subscribe>;
    unsubscribeBlock(): Promise<import("../../types/blockbook").Subscribe> | {
        subscribed: boolean;
    };
    subscribeFiatRates(currency?: string): Promise<import("../../types/blockbook").Subscribe>;
    unsubscribeFiatRates(): Promise<import("../../types/blockbook").Subscribe> | {
        subscribed: boolean;
    };
    dispose(): void;
}
export {};
