@bajetech/digitalbits-wallet-sdk
Version:
A library to make it easier to write wallets that interact with the DigitalBits blockchain
55 lines • 2.78 kB
JavaScript
import { __assign } from "tslib";
import BigNumber from "bignumber.js";
import { Asset } from "xdb-digitalbits-sdk";
import { getBalanceIdentifier } from ".";
import { BASE_RESERVE, BASE_RESERVE_MIN_COUNT, NATIVE_ASSET_IDENTIFIER, } from "../constants/digitalbits";
export function makeDisplayableBalances(accountDetails) {
var balances = accountDetails.balances, subentry_count = accountDetails.subentry_count, num_sponsored = accountDetails.num_sponsored, num_sponsoring = accountDetails.num_sponsoring;
var displayableBalances = Object.values(balances).reduce(function (memo, balance) {
var _a;
var identifier = getBalanceIdentifier(balance);
var total = new BigNumber(balance.balance);
var sellingLiabilities = new BigNumber(0);
var buyingLiabilities = new BigNumber(0);
var available;
if ("selling_liabilities" in balance) {
sellingLiabilities = new BigNumber(balance.selling_liabilities);
available = total.minus(sellingLiabilities);
}
if ("buying_liabilities" in balance) {
buyingLiabilities = new BigNumber(balance.buying_liabilities);
}
if (identifier === NATIVE_ASSET_IDENTIFIER) {
// define the native balance line later
return __assign(__assign({}, memo), { native: {
token: {
type: NATIVE_ASSET_IDENTIFIER,
code: Asset.native().getCode(),
},
total: total,
available: available,
sellingLiabilities: sellingLiabilities,
buyingLiabilities: buyingLiabilities,
minimumBalance: new BigNumber(BASE_RESERVE_MIN_COUNT)
.plus(subentry_count)
.plus(num_sponsoring)
.minus(num_sponsored)
.times(BASE_RESERVE)
.plus(sellingLiabilities),
} });
}
var assetBalance = balance;
var assetSponsor = assetBalance.sponsor
? { sponsor: assetBalance.sponsor }
: {};
return __assign(__assign({}, memo), (_a = {}, _a[identifier] = __assign({ token: {
type: assetBalance.asset_type,
code: assetBalance.asset_code,
issuer: {
key: assetBalance.asset_issuer,
},
}, sellingLiabilities: sellingLiabilities, buyingLiabilities: buyingLiabilities, total: total, limit: new BigNumber(assetBalance.limit), available: total.minus(sellingLiabilities) }, assetSponsor), _a));
}, {});
return displayableBalances;
}
//# sourceMappingURL=makeDisplayableBalances.js.map