UNPKG

machinomy

Version:

Micropayments powered by Ethereum

78 lines 2.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const BigNumber = require("bignumber.js"); const Signature_1 = require("./Signature"); class Payment { constructor(options) { this.channelId = options.channelId; this.sender = options.sender; this.receiver = options.receiver; this.price = options.price; this.value = options.value; this.channelValue = options.channelValue; this.signature = options.signature; this.meta = options.meta; this.token = options.token; this.createdAt = options.createdAt; this.tokenContract = options.tokenContract; } } exports.default = Payment; class PaymentSerde { serialize(obj) { const sig = obj.signature.toParts(); return { channelId: obj.channelId.toString(), value: obj.value.toString(), sender: obj.sender, receiver: obj.receiver, price: obj.price.toString(), channelValue: obj.channelValue.toString(), v: sig.v, r: sig.r, s: sig.s, token: obj.token, meta: obj.meta, createdAt: obj.createdAt, tokenContract: obj.tokenContract }; } deserialize(data) { PaymentSerde.required.forEach((field) => { if (!(field in data)) { throw new Error(`Required field not found: ${field}`); } }); return new Payment({ channelId: data.channelId, value: new BigNumber.BigNumber(String(data.value)), sender: data.sender, receiver: data.receiver, price: new BigNumber.BigNumber(String(data.price)), channelValue: new BigNumber.BigNumber(String(data.channelValue)), signature: Signature_1.default.fromParts({ v: Number(data.v), r: data.r, s: data.s }), token: data.token, meta: data.meta, createdAt: Number(data.createdAt), tokenContract: data.tokenContract }); } } PaymentSerde.instance = new PaymentSerde(); PaymentSerde.required = [ 'channelId', 'value', 'sender', 'receiver', 'price', 'channelValue', 'v', 'r', 's' ]; exports.PaymentSerde = PaymentSerde; //# sourceMappingURL=payment.js.map