UI / src / utils / bignumber.ts
bignumber.ts
Raw
import BigNumber from "bignumber.js";

export const BIG_ZERO = new BigNumber(0);
export const BIG_ONE = new BigNumber(1);
export const BIG_NINE = new BigNumber(9);
export const BIG_TEN = new BigNumber(10);
export const BIG_EIGHTEEN = new BigNumber(18);

export const convertToBigNumber = (
  _number: number | string | BigNumber
): BigNumber => new BigNumber(_number.toString());

export const convertToString = (_Number: BigNumber): string => {
  return _Number.toFixed();
};

export const formatNumber = (
  _number: number | string | BigNumber,
  _decimal: number,
  _roundingMode: BigNumber.RoundingMode = 1
): string => {
  const bigAmount = convertToBigNumber(_number);
  return bigAmount.toFormat(_decimal, _roundingMode);
};

export const roundNumber = (
  _number: number | string | BigNumber,
  _decimal: number,
  _roundingMode: BigNumber.RoundingMode = 1
): BigNumber => {
  const bigAmount = convertToBigNumber(_number);
  return bigAmount.decimalPlaces(_decimal, _roundingMode);
};

// calculation
export const calculateNumberDecimal = (
  _number: number | string | BigNumber,
  _decimal: number
): string => {
  const bigNumber = convertToBigNumber(_number);
  const bigDecimal = convertToBigNumber(10 ** -_decimal);
  return convertToString(
    roundNumber(bigNumber.multipliedBy(bigDecimal), _decimal)
  );
};

export const calculateNumberDecimalContract = (
  _number: number | string,
  _decimal: number
): string => {
  const bigNumber = convertToBigNumber(_number);
  const bigDecimal = convertToBigNumber(10 ** _decimal);
  return convertToString(roundNumber(bigNumber.multipliedBy(bigDecimal), 0));
};

export const calculateMultiplyNumbers = (
  _firstNumber: number | string,
  _secNumber: number | string
): BigNumber => {
  const bigAmount = convertToBigNumber(_firstNumber);
  const bigDecimal = convertToBigNumber(_secNumber);
  return bigAmount.multipliedBy(bigDecimal);
};

export const calculateDivideNumbers = (
  _firstNumber: number | string,
  _secNumber: number | string
): BigNumber => {
  const bigAmount = convertToBigNumber(_firstNumber);
  const bigDecimal = convertToBigNumber(_secNumber);
  return bigAmount.div(bigDecimal);
};

export const calculateAddNumbers = (
  _firstNumber: number | string,
  _secNumber: number | string
): BigNumber => {
  const bigAmount = convertToBigNumber(_firstNumber);
  const bigDecimal = convertToBigNumber(_secNumber);
  return bigAmount.plus(bigDecimal);
};

export const calculateMinusNumbers = (
  _firstNumber: number | string,
  _secNumber: number | string
): BigNumber => {
  const bigAmount = convertToBigNumber(_firstNumber);
  const bigDecimal = convertToBigNumber(_secNumber);
  return bigAmount.minus(bigDecimal);
};

// compare

export const isEqual = (
  _firstNumber: BigNumber,
  _secNumber: BigNumber
): boolean => {
  const bigAmount = _firstNumber;
  const bigDecimal = _secNumber;
  return bigAmount.eq(bigDecimal);
};

export const isGreaterThan = (
  _firstNumber: BigNumber | string,
  _secNumber: BigNumber | string
): boolean => {
  const bigAmount = convertToBigNumber(_firstNumber);
  const bigDecimal = convertToBigNumber(_secNumber);
  return bigAmount.gt(bigDecimal);
};

export const isGreaterThanOrEqualTo = (
  _firstNumber: BigNumber,
  _secNumber: BigNumber
): boolean => {
  const bigAmount = _firstNumber;
  const bigDecimal = _secNumber;
  return bigAmount.gte(bigDecimal);
};