import { Observable } from 'rxjs/Observable';
import { SocketDataResponse } from '@documment/mmp.core';
import { EventRegistrar } from './event-registrar';
import { SocketConfig } from '../models/socket-config.model';
import { Logger } from '../../logging/logger';
export declare enum SocketState {
    disconnected = 1,
    connecting = 2,
    connected = 3,
    disconnecting = 4,
}
export declare class SocketIoClient {
    private config;
    private eventRegistrar;
    private logger;
    private socket;
    private state;
    private connectedObservable;
    private onConnected;
    private disconnectedObservable;
    private onDisconnected;
    constructor(config: SocketConfig, eventRegistrar: EventRegistrar, logger: Logger);
    readonly socketState: SocketState;
    readonly canDisconnect: boolean;
    readonly canConnect: boolean;
    connect(): void;
    connected(): Observable<void>;
    disconnect(): void;
    disconnected(): Observable<void>;
    on(eventId: string): Observable<SocketDataResponse>;
    emit(event: string, ...payload: any[]): void;
}
