export interface SendableConnection { send(data: string): void; } export interface ReadWriteConnection extends SendableConnection { /** * Message received from the connection. */ onMessage(cb: (data: string) => void): void; /** * Indicates permanent closure, meaning we should dispose. */ onClose(cb: () => void): void; /** * Connection is temporarily down. */ onDown(cb: () => void): void; /** * Connection is back up. */ onUp(cb: () => void): void; } export declare type LoggerArgument = (() => Array<{ [key: string]: any; }>) | { [key: string]: any; }; export interface Logger { trace(message: string, ...args: LoggerArgument[]): void; error(message: string, ...args: LoggerArgument[]): void; } export declare class DefaultLogger implements Logger { private readonly name; constructor(name: string); trace(message: string, ...args: LoggerArgument[]): void; error(message: string, ...args: LoggerArgument[]): void; private log; } export declare enum ConnectionStatus { Disconnected = 0, Connected = 1, Closed = 2 }