UNPKG

@ledgerhq/coin-stellar

Version:
64 lines 3.17 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildSubAccounts = exports.getAssetIdFromTokenId = void 0; const bignumber_js_1 = __importDefault(require("bignumber.js")); const index_1 = require("@ledgerhq/coin-framework/account/index"); const parseCurrencyUnit_1 = require("@ledgerhq/coin-framework/currencies/parseCurrencyUnit"); const operation_1 = require("@ledgerhq/coin-framework/operation"); const cryptoassets_1 = require("@ledgerhq/cryptoassets"); const getAssetIdFromTokenId = (tokenId) => tokenId.split("/")[2]; exports.getAssetIdFromTokenId = getAssetIdFromTokenId; const getAssetIdFromAsset = (asset) => `${asset.asset_code}:${asset.asset_issuer}`; function buildStellarTokenAccount({ parentAccountId, stellarAsset, token, operations, }) { const assetId = (0, exports.getAssetIdFromTokenId)(token.id); const id = `${parentAccountId}+${assetId}`; const balance = (0, parseCurrencyUnit_1.parseCurrencyUnit)(token.units[0], stellarAsset.balance || "0"); const reservedBalance = new bignumber_js_1.default(stellarAsset.balance).minus(stellarAsset.selling_liabilities || 0); const spendableBalance = (0, parseCurrencyUnit_1.parseCurrencyUnit)(token.units[0], reservedBalance.toString()); return { type: "TokenAccount", id, parentId: parentAccountId, token, operationsCount: operations.length, operations: operations.map(op => ({ ...op, id: (0, operation_1.encodeOperationId)(id, op.hash, op.extra.ledgerOpType), accountId: id, type: op.extra.ledgerOpType, value: op.extra.assetAmount ? new bignumber_js_1.default(op.extra.assetAmount) : op.value, })), pendingOperations: [], balance, spendableBalance, swapHistory: [], creationDate: operations.length > 0 ? operations[operations.length - 1].date : new Date(), balanceHistoryCache: index_1.emptyHistoryCache, // calculated in the jsHelpers }; } function buildSubAccounts({ currency, accountId, assets, syncConfig, operations, }) { const { blacklistedTokenIds = [] } = syncConfig; const allTokens = (0, cryptoassets_1.listTokensForCryptoCurrency)(currency); if (allTokens.length === 0 || assets.length === 0) { return undefined; } const tokenAccounts = []; assets.map(asset => { const token = (0, cryptoassets_1.findTokenById)(`stellar/asset/${getAssetIdFromAsset(asset)}`); if (token && !blacklistedTokenIds.includes(token.id)) { tokenAccounts.push(buildStellarTokenAccount({ parentAccountId: accountId, stellarAsset: asset, token, operations: operations.filter(op => op.extra.assetCode === asset.asset_code && op.extra.assetIssuer === asset.asset_issuer), })); } }); return tokenAccounts; } exports.buildSubAccounts = buildSubAccounts; //# sourceMappingURL=tokens.js.map