UNPKG

machinomy

Version:

Micropayments powered by Ethereum

40 lines 1.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const PaymentChannel_1 = require("./PaymentChannel"); const ChannelState_1 = require("./ChannelState"); const bignumber_js_1 = require("bignumber.js"); class ChannelInflator { constructor(channelEthContract, channelTokenContract) { this.channelEthContract = channelEthContract; this.channelTokenContract = channelTokenContract; } static isTokenContractDefined(tokenContract) { // tslint:disable-next-line:strict-type-predicates return tokenContract !== undefined && tokenContract !== null && tokenContract.startsWith('0x') && parseInt(tokenContract, 16) !== 0; } async inflate(paymentChannelJSON) { const tokenContract = paymentChannelJSON.tokenContract; const channelId = paymentChannelJSON.channelId; const contract = this.actualContract(tokenContract); const state = await contract.getState(channelId); const channel = await contract.channelById(channelId); if (channel) { const value = channel[2]; const settlingUntil = new bignumber_js_1.BigNumber(channel[4]); return new PaymentChannel_1.PaymentChannel(paymentChannelJSON.sender, paymentChannelJSON.receiver, paymentChannelJSON.channelId, value, paymentChannelJSON.spent, state === ChannelState_1.ChannelState.Impossible ? ChannelState_1.ChannelState.Settled : state, paymentChannelJSON.tokenContract, paymentChannelJSON.settlementPeriod, settlingUntil); } else { return null; } } actualContract(tokenContract) { if (ChannelInflator.isTokenContractDefined(tokenContract)) { return this.channelTokenContract; } else { return this.channelEthContract; } } } exports.default = ChannelInflator; //# sourceMappingURL=ChannelInflator.js.map