UNPKG

@funded-labs/plug-controller

Version:

Internet Computer Plug wallet's controller

70 lines (69 loc) 2.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseFee = exports.parseAmount = exports.parseToFloatAmount = exports.formatAssetBySymbol = void 0; const constants_1 = require("../constants"); const formatAssetBySymbol = (_amount, symbol, icpPrice) => { const amount = Number.isNaN(_amount) ? NaN : parseFloat(_amount); const icpValue = Number.isNaN(amount) ? NaN : amount * icpPrice; const tcValue = Number.isNaN(amount) ? NaN : amount * constants_1.USD_PER_TC; return ({ ICP: { amount, value: icpValue, symbol: 'ICP', decimals: 8, }, XTC: { amount, value: tcValue, symbol: 'XTC', decimals: 12, }, WTC: { amount, value: tcValue, symbol: 'WTC', decimals: 12, }, WICP: { amount, value: icpValue, symbol: 'WICP', decimals: 8, }, default: { amount }, }[symbol || 'default'] || { amount }); }; exports.formatAssetBySymbol = formatAssetBySymbol; const parseToFloatAmount = (amount, decimals) => { let amountString = `${amount}`; let prefix = ''; if (amountString[0] === '-') { prefix = '-'; amountString = amountString.slice(1, amountString.length); } const difference = decimals - amountString.length; if (decimals >= amountString.length) { const formatedString = '0'.repeat(difference + 1) + amountString; return `${prefix + formatedString[0]}.${formatedString.slice(1, formatedString.length)}`; } return `${prefix + amountString.slice(0, Math.abs(difference))}.${amountString.slice(Math.abs(difference))}`; }; exports.parseToFloatAmount = parseToFloatAmount; const parseAmount = (transactionObject) => { var _a, _b, _c, _d; const { amount, currency, token, sonicData, } = transactionObject; const { decimals = (_c = constants_1.TOKENS[(_b = (_a = sonicData === null || sonicData === void 0 ? void 0 : sonicData.token) === null || _a === void 0 ? void 0 : _a.details) === null || _b === void 0 ? void 0 : _b.symbol]) === null || _c === void 0 ? void 0 : _c.decimals } = Object.assign(Object.assign(Object.assign({}, currency), token), ((_d = sonicData === null || sonicData === void 0 ? void 0 : sonicData.token) !== null && _d !== void 0 ? _d : {})); const parsedAmount = (0, exports.parseToFloatAmount)(amount, decimals); return parsedAmount; }; exports.parseAmount = parseAmount; const parseFee = (fee) => { if (fee instanceof Object && ('token' in fee || 'currency' in fee)) { return Object.assign(Object.assign({}, fee), { amount: (0, exports.parseAmount)(fee) }); } return { amount: fee, }; }; exports.parseFee = parseFee;