machinomy
Version:
Micropayments powered by Ethereum
78 lines • 2.43 kB
JavaScript
;
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