export const enum MessageType { Invocation = 1, Result, Completion } export interface HubMessage { readonly type: MessageType; readonly invocationId: string; } export interface InvocationMessage extends HubMessage { readonly target: string; readonly arguments: Array; readonly nonblocking?: boolean; } export interface ResultMessage extends HubMessage { readonly item?: any; } export interface CompletionMessage extends HubMessage { readonly error?: string; readonly result?: any; } export interface IHubProtocol { parseMessages(input: string): HubMessage[]; writeMessage(message: HubMessage): string; }