UNPKG

@ledgerhq/live-common

Version:
48 lines 2.47 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.groupAccountsByAsset = void 0; const bignumber_js_1 = __importDefault(require("bignumber.js")); const logic_1 = require("@ledgerhq/live-countervalues/logic"); const groupAccountsByAsset = (accounts, counterValuesState, targetCurrency) => { const initialGroupedAccounts = {}; return accounts.reduce((groupedAccounts, account) => { const assetId = account.type === "Account" ? account.currency.id : account.token.id; let assetGroup = groupedAccounts[assetId]; if (!assetGroup) { const currency = account.type === "Account" ? account.currency : account.token; assetGroup = groupedAccounts[assetId] = { totalBalance: new bignumber_js_1.default(0), totalFiatValue: new bignumber_js_1.default(0), accounts: [], referenceCurrency: currency, // First currency becomes the reference }; } const currency = account.type === "Account" ? account.currency : account.token; const balance = account.balance; // Convert balance to reference currency magnitude before summing const referenceMagnitude = assetGroup.referenceCurrency.units[0].magnitude || 0; const currentMagnitude = currency.units[0].magnitude || 0; const magnitudeDiff = referenceMagnitude - currentMagnitude; const normalizedBalance = balance.shiftedBy(magnitudeDiff); const fiatValue = calculateFiatValue(account, counterValuesState, targetCurrency); assetGroup.totalBalance = assetGroup.totalBalance.plus(normalizedBalance); assetGroup.totalFiatValue = assetGroup.totalFiatValue.plus(fiatValue || 0); assetGroup.accounts.push(account); return groupedAccounts; }, initialGroupedAccounts); }; exports.groupAccountsByAsset = groupAccountsByAsset; function calculateFiatValue(account, state, toCurrency) { const currency = account.type === "Account" ? account.currency : account.token; const balanceNumber = account.balance.toNumber(); const fiatValue = (0, logic_1.calculate)(state, { from: currency, to: toCurrency, value: balanceNumber, }); return fiatValue || 0; } //# sourceMappingURL=groupAccountsByAsset.js.map