UNPKG

fbonds-core

Version:

Banx protocol sdk

69 lines (68 loc) 2.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.calculateAPRforOffer = exports.calculateLtvApr = exports.getFactoredApr = exports.calculateMCApr = void 0; const calculateMCApr = (mcap) => { if (mcap >= 1000) { return 0; } if (mcap >= 500) { return 30; } if (mcap >= 200) { return 50; } if (mcap >= 100) { return 70; } if (mcap >= 50) { return 100; } return 200; }; exports.calculateMCApr = calculateMCApr; const getFactoredApr = (ltvApr, mcap) => { if (mcap >= 1000) { return ltvApr; } if (mcap >= 500) { return ltvApr * 0.3 + ltvApr; } if (mcap >= 200) { return ltvApr * 0.5 + ltvApr; } if (mcap >= 100) { return ltvApr * 0.7 + ltvApr; } if (mcap >= 50) { return ltvApr; } return ltvApr * 2; }; exports.getFactoredApr = getFactoredApr; const calculateLtvApr = (loanToValue) => { const minApr = 8; const maxApr = 50; const minLtv = 30; const maxLtv = 99; // If loanToValue is less than or equal to minLtv, return minApr if (loanToValue <= minLtv) { return minApr; } // If loanToValue is greater than or equal to maxLtv, return maxApr if (loanToValue >= maxLtv) { return maxApr; } // Calculate APR for values between minLtv and maxLtv const aprStep = (maxApr - minApr) / (maxLtv - minLtv); // Calculate the APR step value const apr = minApr + (loanToValue - minLtv) * aprStep; // Calculate and round to nearest 100 return apr; }; exports.calculateLtvApr = calculateLtvApr; const calculateAPRforOffer = (offerLTV, marketCap) => { // skipping util rate const baseApr = (0, exports.calculateLtvApr)(offerLTV) + (0, exports.calculateMCApr)(marketCap); const factorApr = (0, exports.getFactoredApr)((0, exports.calculateLtvApr)(offerLTV), marketCap) + (0, exports.calculateMCApr)(marketCap); return { apr: baseApr, factoredApr: factorApr }; }; exports.calculateAPRforOffer = calculateAPRforOffer;