import { EventEmitter } from 'events'; export class BrokerError extends Error {} export class RawRequest { setCallback(callback: Function): void; setAncillaryData(ancillaryData: any): void; getAncillaryData(): any; call(...args: any[]): any; } export interface Logger { log(...args: any[]): void; info(...args: any[]): void; warn(...args: any[]): void; error(...args: any[]): void; debug(...args: any[]): void; trace(...args: any[]): void; } export interface BrokerBaseParams { moduleName?: string; maxPacketSize?: number; logger?: Logger; } export class BrokerBase extends EventEmitter { constructor(params: BrokerBaseParams); moduleName: string; maxPacketSize: number; logger: Logger; apiHandlers: Map; events: Map; api: { [vendor: string]: { [module: string]: { emit(eventName: string, ...args: any[]): void; on(eventName: string, handler: Function): void; off(eventName: string, handler: Function): void; once(eventName: string, handler: Function): void; } & { [method: string]: (...args: any[]) => Promise; }; }; }; getMethodProxy(vendorName: string, moduleName: string, options?: any): any; initProxy(): void; sendResponse(socket: any, message: any, success: boolean, data?: any[], relayedMessage?: boolean): Promise; registerAPIHandler(messageType: string, messageHandler: Function): boolean; subscribeToAPIEvent( eventName: string, eventHandler: Function, options?: { sendMessage?: boolean; once?: boolean } ): Promise; unsubscribeFromAPIEvent(eventName: string, eventHandler?: Function, sendMessage?: boolean): Promise; sendMessage(message: any, socket: any, relayedMessage?: boolean): Promise; ping(targetModuleName: string): Promise; emitMessage(args: any[], vendorName: string, moduleName: string, options?: any): void; destroy(): void | Promise; } export interface BrokerClientParams extends BrokerBaseParams { webSocketURL?: string; isDuplicate?: boolean; parent?: BrokerClient; ssl?: boolean; } export interface ConnectOptions { host: string; port: number; } export interface InitModuleParams { clientModuleName?: string; menuTitle?: string; moduleName: string; serverURL?: string; webSocketURL?: string; hub: ConnectOptions; } export class BrokerClient extends BrokerBase { constructor(params?: BrokerClientParams); webSocketURL: string; connected: boolean; isDuplicate: boolean; parent: BrokerClient; ssl: boolean; socket: any; getConnectPromise(): Promise; forceReconnect(): void; connect(options: ConnectOptions): void; duplicate(params: { moduleName: string }): BrokerClient; isConnected(): boolean; ping(): Promise; getSocket(): any; handleMessage(rawMessage: string): Promise; sendMessage(message: any): Promise; addSocketListeners(): void; removeSocketListeners(): void; resubscribeModuleEvents(): void; onOpen(): Promise; onError(err: any): void; onClose(e: any): void; registerHandlersToRemote(targetModuleName: string): Promise; deregisterHandlersFromRemotes(): Promise; unsubscribeFromAllEvents(): Promise; destroy(): Promise; registerAPIHandlers(handlers: { [key: string]: Function }, context?: any, remote?: string): Promise; static initModule(params: InitModuleParams): Promise; }