UNPKG

@node-dlc/messaging

Version:
193 lines 7.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.HyperbolaPayoutCurvePiece = exports.PolynomialPayoutCurvePiece = exports.PayoutCurvePiece = void 0; const bufio_1 = require("@node-dlc/bufio"); const MessageType_1 = require("../MessageType"); class PayoutCurvePiece { static deserialize(buf) { const reader = new bufio_1.BufferReader(buf); const type = Number(reader.readBigSize()); switch (type) { case MessageType_1.MessageType.PolynomialPayoutCurvePiece: return PolynomialPayoutCurvePiece.deserialize(buf); case MessageType_1.MessageType.HyperbolaPayoutCurvePiece: return HyperbolaPayoutCurvePiece.deserialize(buf); case MessageType_1.MessageType.OldHyperbolaPayoutCurvePiece: return HyperbolaPayoutCurvePiece.deserialize(buf); default: throw new Error(`Payout function TLV type must be PolynomialPayoutCurvePiece or HyperbolaPayoutCurvePiece`); } } } exports.PayoutCurvePiece = PayoutCurvePiece; /** * PolynomialPayoutCurvePiece */ class PolynomialPayoutCurvePiece extends PayoutCurvePiece { constructor() { super(...arguments); /** * The type for polynomial_payout_curve_piece message. polynomial_payout_curve_piece = ??? */ this.type = PolynomialPayoutCurvePiece.type; this.points = []; } /** * Deserializes an polynomial_payout_curve_piece message * @param buf */ static deserialize(buf) { const instance = new PolynomialPayoutCurvePiece(); const reader = new bufio_1.BufferReader(buf); reader.readBigSize(); // read type instance.length = reader.readBigSize(); // need to fix this reader.readUInt16BE(); // num_pts while (!reader.eof) { const eventOutcome = reader.readBigSize(); const outcomePayout = reader.readBigSize(); const extraPrecision = reader.readUInt16BE(); instance.points.push({ eventOutcome, outcomePayout, extraPrecision, }); } return instance; } /** * Converts polynomial_payout_curve_piece to JSON */ toJSON() { return { type: this.type, points: this.points.map((point) => { return { eventOutcome: Number(point.eventOutcome), outcomePayout: Number(point.outcomePayout), extraPrecision: Number(point.extraPrecision), }; }), }; } /** * Serializes the polynomial_payout_curve_piece message into a Buffer */ serialize() { const writer = new bufio_1.BufferWriter(); writer.writeBigSize(this.type); const dataWriter = new bufio_1.BufferWriter(); dataWriter.writeUInt16BE(this.points.length); for (const point of this.points) { dataWriter.writeBigSize(point.eventOutcome); dataWriter.writeBigSize(point.outcomePayout); dataWriter.writeUInt16BE(point.extraPrecision); } writer.writeBigSize(dataWriter.size); writer.writeBytes(dataWriter.toBuffer()); return writer.toBuffer(); } } exports.PolynomialPayoutCurvePiece = PolynomialPayoutCurvePiece; PolynomialPayoutCurvePiece.type = MessageType_1.MessageType.PolynomialPayoutCurvePiece; /** * HyperbolaPayoutCurvePiece */ class HyperbolaPayoutCurvePiece extends PayoutCurvePiece { constructor() { super(...arguments); /** * The type for hyperbola_payout_curve_piece message. hyperbola_payout_curve_piece = ??? */ this.type = HyperbolaPayoutCurvePiece.type; } /** * Deserializes an hyperbola_payout_curve_piece message * @param buf */ static deserialize(buf) { const instance = new HyperbolaPayoutCurvePiece(); const reader = new bufio_1.BufferReader(buf); reader.readBigSize(); // read type instance.length = reader.readBigSize(); // need to fix this instance.usePositivePiece = reader.readUInt8() === 1; instance.translateOutcomeSign = reader.readUInt8() === 1; instance.translateOutcome = reader.readBigSize(); instance.translateOutcomeExtraPrecision = reader.readUInt16BE(); instance.translatePayoutSign = reader.readUInt8() === 1; instance.translatePayout = reader.readBigSize(); instance.translatePayoutExtraPrecision = reader.readUInt16BE(); instance.aSign = reader.readUInt8() === 1; instance.a = reader.readBigSize(); instance.aExtraPrecision = reader.readUInt16BE(); instance.bSign = reader.readUInt8() === 1; instance.b = reader.readBigSize(); instance.bExtraPrecision = reader.readUInt16BE(); instance.cSign = reader.readUInt8() === 1; instance.c = reader.readBigSize(); instance.cExtraPrecision = reader.readUInt16BE(); instance.dSign = reader.readUInt8() === 1; instance.d = reader.readBigSize(); instance.dExtraPrecision = reader.readUInt16BE(); return instance; } /** * Converts hyperbola_payout_curve_piece to JSON */ toJSON() { return { type: this.type, usePositivePiece: this.usePositivePiece, translateOutcomeSign: this.translateOutcomeSign, translateOutcome: Number(this.translateOutcome), translateOutcomeExtraPrecision: this.translateOutcomeExtraPrecision, translatePayoutSign: this.translatePayoutSign, translatePayout: Number(this.translatePayout), translatePayoutExtraPrecision: this.translatePayoutExtraPrecision, aSign: this.aSign, a: Number(this.a), aExtraPrecision: this.aExtraPrecision, bSign: this.bSign, b: Number(this.b), bExtraPrecision: this.bExtraPrecision, cSign: this.cSign, c: Number(this.c), cExtraPrecision: this.cExtraPrecision, dSign: this.dSign, d: Number(this.d), dExtraPrecision: this.dExtraPrecision, }; } /** * Serializes the hyperbola_payout_curve_piece message into a Buffer */ serialize() { const writer = new bufio_1.BufferWriter(); writer.writeBigSize(this.type); const dataWriter = new bufio_1.BufferWriter(); dataWriter.writeUInt8(this.usePositivePiece ? 1 : 0); dataWriter.writeUInt8(this.translateOutcomeSign ? 1 : 0); dataWriter.writeBigSize(this.translateOutcome); dataWriter.writeUInt16BE(this.translateOutcomeExtraPrecision); dataWriter.writeUInt8(this.translatePayoutSign ? 1 : 0); dataWriter.writeBigSize(this.translatePayout); dataWriter.writeUInt16BE(this.translatePayoutExtraPrecision); dataWriter.writeUInt8(this.aSign ? 1 : 0); dataWriter.writeBigSize(this.a); dataWriter.writeUInt16BE(this.aExtraPrecision); dataWriter.writeUInt8(this.bSign ? 1 : 0); dataWriter.writeBigSize(this.b); dataWriter.writeUInt16BE(this.bExtraPrecision); dataWriter.writeUInt8(this.cSign ? 1 : 0); dataWriter.writeBigSize(this.c); dataWriter.writeUInt16BE(this.cExtraPrecision); dataWriter.writeUInt8(this.dSign ? 1 : 0); dataWriter.writeBigSize(this.d); dataWriter.writeUInt16BE(this.dExtraPrecision); writer.writeBigSize(dataWriter.size); writer.writeBytes(dataWriter.toBuffer()); return writer.toBuffer(); } } exports.HyperbolaPayoutCurvePiece = HyperbolaPayoutCurvePiece; HyperbolaPayoutCurvePiece.type = MessageType_1.MessageType.HyperbolaPayoutCurvePiece; //# sourceMappingURL=PayoutCurvePiece.js.map