import * as Rx from 'rxjs';
export interface InfoMessage {
    event: 'info';
    code?: number;
}
export interface ServerStatusMessage extends InfoMessage {
    version: number;
    platform: {
        status: 0 | 1;
    };
}
export interface SubscribeMessage {
    event: 'subscribe';
    [key: string]: any;
}
export interface SubscribedMessage {
    event: 'subscribed';
    chanId: number;
    [key: string]: any;
}
export interface ErrorMessage {
    event: 'error';
    code: number;
    msg: string;
}
export declare type ChannelMessage<T> = [number, T];
export declare type AnyMessage<T> = InfoMessage | ServerStatusMessage | ErrorMessage | SubscribeMessage | SubscribedMessage | ChannelMessage<T>;
export declare class BitfinexWebSocketError extends Error {
    code?: number;
    constructor(message: string, code?: number);
}
export declare const socket: <T>(subscribe: () => SubscribeMessage) => Rx.Observable<T>;
