12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- "use strict";
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.percentToQuality = exports.transferRateToDecimal = exports.qualityToDecimal = exports.decimalToQuality = exports.percentToTransferRate = exports.decimalToTransferRate = void 0;
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
- const errors_1 = require("../errors");
- const BASE_TEN = 10;
- const ONE_BILLION = '1000000000';
- const TWO_BILLION = '2000000000';
- function percentToDecimal(percent) {
- if (!percent.endsWith('%')) {
- throw new errors_1.ValidationError(`Value ${percent} must end with %`);
- }
- const split = percent.split('%').filter((str) => str !== '');
- if (split.length !== 1) {
- throw new errors_1.ValidationError(`Value ${percent} contains too many % signs`);
- }
- return new bignumber_js_1.default(split[0]).dividedBy('100').toString(BASE_TEN);
- }
- function decimalToTransferRate(decimal) {
- const rate = new bignumber_js_1.default(decimal).times(ONE_BILLION).plus(ONE_BILLION);
- if (rate.isLessThan(ONE_BILLION) || rate.isGreaterThan(TWO_BILLION)) {
- throw new errors_1.ValidationError(`Decimal value must be between 0 and 1.00.`);
- }
- const billionths = rate.toString(BASE_TEN);
- if (billionths === ONE_BILLION) {
- return 0;
- }
- if (billionths === 'NaN') {
- throw new errors_1.ValidationError(`Value is not a number`);
- }
- if (billionths.includes('.')) {
- throw new errors_1.ValidationError(`Decimal exceeds maximum precision.`);
- }
- return Number(billionths);
- }
- exports.decimalToTransferRate = decimalToTransferRate;
- function percentToTransferRate(percent) {
- return decimalToTransferRate(percentToDecimal(percent));
- }
- exports.percentToTransferRate = percentToTransferRate;
- function decimalToQuality(decimal) {
- const rate = new bignumber_js_1.default(decimal).times(ONE_BILLION);
- const billionths = rate.toString(BASE_TEN);
- if (billionths === 'NaN') {
- throw new errors_1.ValidationError(`Value is not a number`);
- }
- if (billionths.includes('-')) {
- throw new errors_1.ValidationError('Cannot have negative Quality');
- }
- if (billionths === ONE_BILLION) {
- return 0;
- }
- if (billionths.includes('.')) {
- throw new errors_1.ValidationError(`Decimal exceeds maximum precision.`);
- }
- return Number(billionths);
- }
- exports.decimalToQuality = decimalToQuality;
- function qualityToDecimal(quality) {
- if (!Number.isInteger(quality)) {
- throw new errors_1.ValidationError('Quality must be an integer');
- }
- if (quality < 0) {
- throw new errors_1.ValidationError('Negative quality not allowed');
- }
- if (quality === 0) {
- return '1';
- }
- const decimal = new bignumber_js_1.default(quality).dividedBy(ONE_BILLION);
- return decimal.toString(BASE_TEN);
- }
- exports.qualityToDecimal = qualityToDecimal;
- function transferRateToDecimal(rate) {
- if (!Number.isInteger(rate)) {
- throw new errors_1.ValidationError('Error decoding, transfer Rate must be an integer');
- }
- if (rate === 0) {
- return '0';
- }
- const decimal = new bignumber_js_1.default(rate).minus(ONE_BILLION).dividedBy(ONE_BILLION);
- if (decimal.isLessThan(0)) {
- throw new errors_1.ValidationError('Error decoding, negative transfer rate');
- }
- return decimal.toString(BASE_TEN);
- }
- exports.transferRateToDecimal = transferRateToDecimal;
- function percentToQuality(percent) {
- return decimalToQuality(percentToDecimal(percent));
- }
- exports.percentToQuality = percentToQuality;
- //# sourceMappingURL=quality.js.map
|