/** * @module Socket * Provides high-level helpers for DDP connection, method calls, subscriptions. */ import { EventEmitter } from 'tiny-events' import { ILogger, ISocketOptions, ICallback, ISubscription, ICredentials } from '../../interfaces' export interface ISocket { logger: ILogger connect (options: ISocketOptions): Promise disconnect (): Promise tryReopen (): Promise subscribe (topic: string, ...args: any[]): Promise unsubscribe (subscription: ISubscription): Promise unsubscribeAll (): Promise onStreamData (event: string, cb: ICallback): Promise on (event: string, listener: Function): EventEmitter once (event: string, listener: Function): EventEmitter off (event?: string, listener?: Function): EventEmitter emit (event: string, ...args: any[]): boolean listeners (event: string): Function[] removeAllListeners (event?: string): Function[] hasListeners (event: string): boolean } export interface IDriver { config: any login (credentials: ICredentials, args: any): Promise subscribeRoom (rid: string, ...args: any[]): Promise onMessage (cb: ICallback): void subscribeNotifyAll (): Promise subscribeLoggedNotify (): Promise subscribeNotifyUser (): Promise subscribeNotifyUser (): Promise onTyping (cb: ICallback): Promise notifyVisitorTyping (rid: string, username: string, typing: boolean, token: string): Promise methodCall (method: string, ...args: any[]): Promise } export enum Protocols { MQTT = 'mqtt', DDP = 'ddp' }