@r3l/app
Version:
48 lines (35 loc) • 1.84 kB
JavaScript
;
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