/// <reference types="node" />
import { EventEmitter } from 'events';
import { Deferred } from './utils/deferred';
import { BlockchainSettings } from './types';
import * as ResponseTypes from './types/responses';
import * as MessageTypes from './types/messages';
import { Events } from './types/events';
declare interface BlockchainLink {
    on<K extends keyof Events>(type: K, listener: (event: Events[K]) => void): this;
    off<K extends keyof Events>(type: K, listener: (event: Events[K]) => void): this;
    emit<K extends keyof Events>(type: K, ...args: Events[K][]): boolean;
}
declare class BlockchainLink extends EventEmitter {
    settings: BlockchainSettings;
    messageId: number;
    worker: Worker | undefined;
    deferred: Deferred<any>[];
    constructor(settings: BlockchainSettings);
    getWorker(): Promise<Worker>;
    sendMessage<R>(message: any): Promise<R>;
    connect(): Promise<void>;
    getInfo(): Promise<ResponseTypes.GetInfo['payload']>;
    getBlockHash(payload: MessageTypes.GetBlockHash['payload']): Promise<ResponseTypes.GetBlockHash['payload']>;
    getAccountInfo(payload: MessageTypes.GetAccountInfo['payload']): Promise<ResponseTypes.GetAccountInfo['payload']>;
    getAccountUtxo(payload: MessageTypes.GetAccountUtxo['payload']): Promise<ResponseTypes.GetAccountUtxo['payload']>;
    getTransaction(payload: MessageTypes.GetTransaction['payload']): Promise<ResponseTypes.GetTransaction['payload']>;
    getAccountBalanceHistory(payload: MessageTypes.GetAccountBalanceHistory['payload']): Promise<ResponseTypes.GetAccountBalanceHistory['payload']>;
    getCurrentFiatRates(payload: MessageTypes.GetCurrentFiatRates['payload']): Promise<ResponseTypes.GetCurrentFiatRates['payload']>;
    getFiatRatesForTimestamps(payload: MessageTypes.GetFiatRatesForTimestamps['payload']): Promise<ResponseTypes.GetFiatRatesForTimestamps['payload']>;
    getFiatRatesTickersList(payload: MessageTypes.GetFiatRatesTickersList['payload']): Promise<ResponseTypes.GetFiatRatesTickersList['payload']>;
    estimateFee(payload: MessageTypes.EstimateFee['payload']): Promise<ResponseTypes.EstimateFee['payload']>;
    subscribe(payload: MessageTypes.Subscribe['payload']): Promise<ResponseTypes.Subscribe['payload']>;
    unsubscribe(payload: MessageTypes.Unsubscribe['payload']): Promise<ResponseTypes.Unsubscribe['payload']>;
    pushTransaction(payload: MessageTypes.PushTransaction['payload']): Promise<ResponseTypes.PushTransaction['payload']>;
    disconnect(): Promise<boolean>;
    onMessage: (event: {
        data: ResponseTypes.Response;
    }) => void;
    onEvent: (data: ResponseTypes.Response) => void;
    onError: (error: {
        message?: string;
        lineno: number;
        filename: string;
    }) => void;
    dispose(): void;
}
export default BlockchainLink;
export { Message } from './types/messages';
export { Response } from './types/responses';
export * from './types/common';
export * from './types/events';
