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