/// <reference types="node" />
import { MessageEvent, MessageHandlerOptions } from './types';
import EventEmitter from 'events';
import { StrictEventEmitter } from 'strict-event-emitter-types';
import MessageConnection from './MessageConnection';
export declare type MessageClientOptions = MessageHandlerOptions & {
    host?: string;
    oneShot?: boolean;
};
export interface MessageClientEvents {
    connection: MessageConnection;
    message: (event: MessageEvent, connection: MessageConnection) => void;
    close: MessageConnection;
    error: Error;
}
declare const MessageClient_base: new () => StrictEventEmitter<EventEmitter, MessageClientEvents, MessageClientEvents, "addEventListener" | "removeEventListener", "on" | "addListener" | "removeListener" | "once" | "emit">;
export default class MessageClient extends MessageClient_base {
    private running;
    private readonly options;
    private readonly binary;
    private connection;
    private reconnectTimeout;
    private socket;
    constructor(options?: MessageClientOptions);
    start(): Promise<void>;
    stop(): void;
    isConnected(): boolean;
    waitForConnection(): Promise<void>;
    /**
     * @param message Buffer or string containing the message
     */
    send(message: Buffer | string): void;
    private connect;
    private cleanUp;
}
export {};
