Implement needsRefill without BN

This commit is contained in:
Simon Warta 2020-01-30 08:57:00 +01:00
parent 3b10f4e783
commit e737884aa3

View File

@ -1,7 +1,5 @@
import BN = require("bn.js");
import { Account, Amount, TokenTicker } from "@iov/bcp";
import { Uint53 } from "@iov/encoding";
import { Decimal, Uint53 } from "@iov/encoding";
/** Send `factor` times credit amount on refilling */
const defaultRefillFactor = 20;
@ -51,9 +49,16 @@ export function refillThreshold(token: TokenTicker): Amount {
/** true iff the distributor account needs a refill */
export function needsRefill(account: Account, token: TokenTicker): boolean {
const coin = account.balance.find(balance => balance.tokenTicker === token);
const balanceAmount = account.balance.find(b => b.tokenTicker === token);
const tokenBalance = coin ? coin.quantity : "0";
const refillQty = new BN(refillThreshold(token).quantity);
return new BN(tokenBalance).lt(refillQty);
const balance = balanceAmount
? Decimal.fromAtomics(balanceAmount.quantity, balanceAmount.fractionalDigits)
: Decimal.fromAtomics("0", 0);
const thresholdAmount = refillThreshold(token);
const threshold = Decimal.fromAtomics(thresholdAmount.quantity, thresholdAmount.fractionalDigits);
// TODO: perform < operation on Decimal type directly
// https://github.com/iov-one/iov-core/issues/1375
return balance.toFloatApproximation() < threshold.toFloatApproximation();
}