UNPKG

@r3l/app

Version:
48 lines (35 loc) 1.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.computePostPayout = computePostPayout; exports.computeUserPayout = computeUserPayout; var _common = require("@r3l/common"); function computePostPayout(postData, community) { if (!community || !postData || postData.parentPost) return null; if (postData.pagerank < community.currentShares / (community.postCount || 1)) { return 0; } postData.payoutShare = postData.pagerank / (community.topPostShares + postData.pagerank || 1); postData.payout = community.rewardFund * postData.payoutShare; return postData.payout / _common.TOKEN_DECIMALS; } function computeUserPayout(earning, community) { if (!community) return 0; if (earning.earned || earning.status === 'paidout') return earning.earned; if (earning.status === 'pending') { var _earning$postData; if (!(earning !== null && earning !== void 0 && earning.postData)) return 0; if (earning.totalPostShares === 0) return 0; var estimatedPayout = earning.estimatedPostPayout; if (estimatedPayout > 1e8) estimatedPayout /= _common.TOKEN_DECIMALS; var payout = estimatedPayout * earning.shares / earning.totalPostShares; // discount by time var untilPayout = new Date(earning.payoutTime).getTime() - Date.now(); var discount = (_common.PAYOUT_TIME - Math.max(untilPayout, 0)) / _common.PAYOUT_TIME; var avgRank = community.currentShares / (community.postCount || 1); // console.log(earning); var discountProbability = Math.min(1, Math.max(0, (earning === null || earning === void 0 ? void 0 : (_earning$postData = earning.postData) === null || _earning$postData === void 0 ? void 0 : _earning$postData.pagerank) / avgRank - 1)); return payout * discount * discountProbability; } return 0; } //# sourceMappingURL=rewards.js.map