UNPKG

@nolus/nolusjs

Version:

JS library for NodeJS and Web browsers to interact with the Nolus Protocol

67 lines 2.77 kB
import { Coin, CoinPretty, Dec, DecUtils, Int, PricePretty } from '@keplr-wallet/unit'; import { ChainConstants } from '../constants'; /** * CurrencyUtils provides helpers for working with Nolus currencies. Conversion, formatting and calculation. */ export class CurrencyUtils { static convertNolusToUNolus(tokenAmount) { return this.convertDenomToMinimalDenom(tokenAmount, ChainConstants.COIN_MINIMAL_DENOM, ChainConstants.COIN_DECIMALS); } static convertDenomToMinimalDenom(tokenAmount, minimalDenom, decimals) { if (tokenAmount.trim() === '') { return new Coin(minimalDenom, new Dec('0').truncate()); } const amount = new Dec(tokenAmount).mul(DecUtils.getPrecisionDec(decimals)).truncate(); const coin = new Coin(minimalDenom, amount); return coin; } static convertCoinUNolusToNolus(tokenAmount) { return this.convertCoinMinimalDenomToDenom(tokenAmount, ChainConstants.COIN_MINIMAL_DENOM, ChainConstants.COIN_DENOM, ChainConstants.COIN_DECIMALS); } static convertCoinMinimalDenomToDenom(tokenAmount, minimalDenom, denom, decimals) { if (tokenAmount === null || tokenAmount === undefined) { return null; } const amount = new Dec(tokenAmount.amount.toString()); return new CoinPretty({ coinDecimals: decimals, coinMinimalDenom: minimalDenom, coinDenom: denom, }, amount); } static convertUNolusToNolus(tokenAmount) { return this.convertMinimalDenomToDenom(tokenAmount, ChainConstants.COIN_MINIMAL_DENOM, ChainConstants.COIN_DENOM, ChainConstants.COIN_DECIMALS); } static convertMinimalDenomToDenom(tokenAmount, minimalDenom, denom, decimals) { const amount = new Dec(tokenAmount); return new CoinPretty({ coinDecimals: decimals, coinMinimalDenom: minimalDenom, coinDenom: denom, }, amount); } static convertCosmosCoinToKeplCoin(cosmosCoin) { if (!cosmosCoin) { return new Coin('', 0); } return new Coin(cosmosCoin.denom, cosmosCoin.amount); } static calculateBalance(price, tokenAmount, tokenDecimal) { const amount = new Dec(tokenAmount.amount).quoTruncate(new Dec(10).pow(new Int(tokenDecimal))); return new PricePretty({ currency: 'usd', maxDecimals: 4, symbol: '$', locale: 'en-US', }, new Dec(price).mul(amount)); } static formatPrice(price) { return new PricePretty({ currency: 'usd', maxDecimals: 4, symbol: '$', locale: 'en-US', }, new Dec(price)); } } //# sourceMappingURL=CurrencyUtils.js.map