export interface Encoder { encode(msg: MessageType): WireType | void decode(raw: WireType): MessageType | void } export class JSONEncoder implements Encoder { encode(msg: object): string decode(raw: string): object | void }