@funded-labs/plug-controller
Version:
Internet Computer Plug wallet's controller
70 lines (69 loc) • 2.86 kB
JavaScript
;
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;