UNPKG

machinomy

Version:

Micropayments powered by Ethereum

59 lines 2.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ChannelManager_1 = require("./ChannelManager"); const bignumber_js_1 = require("bignumber.js"); /** * The Payment Channel */ class PaymentChannel { /** * @param sender Ethereum address of the client. * @param receiver Ethereum address of the server. * @param channelId Identifier of the channel. * @param value Total value of the channel. * @param spent Value sent by {sender} to {receiver}. * @param state 0 - 'open', 1 - 'settling', 2 - 'settled' * @param tokenContract * @param settlementPeriod * @param settlingUntil */ constructor(sender, receiver, channelId, value, spent, state = 0, tokenContract, settlementPeriod, settlingUntil) { this.sender = sender; this.receiver = receiver; this.channelId = channelId; this.value = new bignumber_js_1.BigNumber(value.toString()); this.spent = new bignumber_js_1.BigNumber(spent.toString()); this.state = Number(state); this.tokenContract = tokenContract || ''; this.settlementPeriod = settlementPeriod || ChannelManager_1.default.DEFAULT_SETTLEMENT_PERIOD; this.settlingUntil = settlingUntil || new bignumber_js_1.BigNumber(0); } static fromPayment(payment) { return new PaymentChannel(payment.sender, payment.receiver, payment.channelId, payment.channelValue, payment.value, undefined, payment.tokenContract || ''); } static fromDocument(document) { return new PaymentChannel(document.sender, document.receiver, document.channelId, document.value, document.spent, document.state, document.tokenContract, document.settlementPeriod, document.settlingUntil); } } exports.PaymentChannel = PaymentChannel; class PaymentChannelSerde { serialize(obj) { return { state: obj.state, spent: obj.spent.toString(), value: obj.value.toString(), channelId: obj.channelId.toString(), receiver: obj.receiver, sender: obj.sender, tokenContract: obj.tokenContract, settlementPeriod: obj.settlementPeriod, settlingUntil: obj.settlingUntil.toString() }; } deserialize(data) { return new PaymentChannel(data.sender, data.receiver, data.channelId, data.value, data.spent, data.state, data.tokenContract, data.settlementPeriod, data.settlingUntil); } } PaymentChannelSerde.instance = new PaymentChannelSerde(); exports.PaymentChannelSerde = PaymentChannelSerde; //# sourceMappingURL=PaymentChannel.js.map