@nolus/nolusjs
Version:
JS library for NodeJS and Web browsers to interact with the Nolus Protocol
67 lines • 2.77 kB
JavaScript
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