UNPKG

send-crypto

Version:

A minimal JavaScript library / wallet for sending crypto assets

50 lines 3.16 kB
import BigNumber from "bignumber.js"; /** * sortUTXOs compares two UTXOs by amount, then confirmations and then hash. * * @example * sortUTXOs({amount: 1, confirmations: 1}, {amount: 2, confirmations: 0}); * // -1, representing that the first parameter should be ordered first. * * @returns a negative value to represent that a should come before b or a * positive value to represent that b should come before a. */ export const sortUTXOs = (a, b) => { // Sort greater values first if (a.amount !== b.amount) { return b.amount - a.amount; } // Sort older UTXOs first if (a.confirmations !== b.confirmations) { return a.confirmations - b.confirmations; } return a.txHash <= b.txHash ? -1 : 1; }; /** * fixValue turns a readable value, e.g. `0.0001` BTC, to the value in the smallest * unit, e.g. `10000` sats. * * @example * fixValue(0.0001, 8) = 10000; * * @param value Value in the readable representation, e.g. `0.0001` BTC. * @param decimals The number of decimals to shift by, e.g. 8. */ export const fixValue = (value, decimals) => new BigNumber(value) .multipliedBy(new BigNumber(10).exponentiatedBy(decimals)) .decimalPlaces(0) .toNumber(); /** * fixUTXO calls {{fixValue}} on the value of the UTXO. */ export const fixUTXO = (utxo, decimals) => ({ ...utxo, amount: fixValue(utxo.amount, decimals), }); /** * fixUTXOs maps over an array of UTXOs and calls {{fixValue}}. */ export const fixUTXOs = (utxos, decimals) => { return utxos.map((utxo) => fixUTXO(utxo, decimals)); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXR4by5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdXR4by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFNBQVMsTUFBTSxjQUFjLENBQUM7QUFVckM7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBTyxFQUFFLENBQU8sRUFBVSxFQUFFO0lBQ2xELDRCQUE0QjtJQUM1QixJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRTtRQUN2QixPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztLQUM5QjtJQUNELHlCQUF5QjtJQUN6QixJQUFJLENBQUMsQ0FBQyxhQUFhLEtBQUssQ0FBQyxDQUFDLGFBQWEsRUFBRTtRQUNyQyxPQUFPLENBQUMsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQztLQUM1QztJQUNELE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQWEsRUFBRSxRQUFnQixFQUFFLEVBQUUsQ0FDeEQsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDO0tBQ2YsWUFBWSxDQUFDLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUN6RCxhQUFhLENBQUMsQ0FBQyxDQUFDO0tBQ2hCLFFBQVEsRUFBRSxDQUFDO0FBRXBCOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBVSxFQUFFLFFBQWdCLEVBQVEsRUFBRSxDQUFDLENBQUM7SUFDNUQsR0FBRyxJQUFJO0lBQ1AsTUFBTSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQztDQUMxQyxDQUFDLENBQUM7QUFFSDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQXNCLEVBQUUsUUFBZ0IsRUFBRSxFQUFFO0lBQ2pFLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ3hELENBQUMsQ0FBQyJ9