UNPKG

@atomiqlabs/base

Version:

Base classes and interfaces for atomiq protocol

47 lines (40 loc) 1.14 kB
/** * Currently defined types of the data propagation messages * * @category Messenger */ export enum MessageType { SWAP_CLAIM_WITNESS = 0, } /** * Representation of an abstract message in a data propagation layer * * @category Messenger */ export abstract class Message { abstract readonly type: MessageType; /** * A mapping of deserializers for different message types * * @internal */ static deserializers: {[type: number]: (obj: any) => Message} = {}; /** * Serializes the message to a format that can be JSON serialized (i.e. no bigints, functions, etc.) */ serialize(): any { return { type: this.type } } /** * Deserializer that parses the message from it's JSON compatible representation * * @param message */ static deserialize(message: any): Message { const deserializer = Message.deserializers[message.type]; if(deserializer==null) throw new Error("Unknown message type " + message.type); return deserializer(message); } }