import { Observable, Subject } from 'rxjs';
import { MonitoringConfig } from './monitoring-config';
import { MotionMasterPubSubSocket } from './motion-master-pub-sub-socket';
import { IMotionMasterMessage, MotionMasterMessage } from './types';
export declare class MotionMasterPubSubClient {
    readonly socket: MotionMasterPubSubSocket;
    readonly data$: Subject<[string, IMotionMasterMessage[]]>;
    private subscriptions;
    readonly notification$: Observable<IMotionMasterMessage>;
    readonly systemEvent$: Observable<MotionMasterMessage.Status.ISystemEvent>;
    readonly deviceEvent$: Observable<MotionMasterMessage.Status.IDeviceEvent>;
    constructor(socket: MotionMasterPubSubSocket);
    get messageIds(): string[];
    subscribe(config: MonitoringConfig): string;
    unsubscribe(messageId: string): void;
    unsubscribeAll(): void;
    createSystemStatesObservable(): Observable<MotionMasterMessage.Status.SystemEvent.State[]>;
}
