UNPKG

send-crypto

Version:

A minimal JavaScript library / wallet for sending crypto assets

57 lines 3.69 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.fixUTXOs = exports.fixUTXO = exports.fixValue = exports.sortUTXOs = void 0; const bignumber_js_1 = __importDefault(require("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. */ 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; }; exports.sortUTXOs = sortUTXOs; /** * 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. */ const fixValue = (value, decimals) => new bignumber_js_1.default(value) .multipliedBy(new bignumber_js_1.default(10).exponentiatedBy(decimals)) .decimalPlaces(0) .toNumber(); exports.fixValue = fixValue; /** * fixUTXO calls {{fixValue}} on the value of the UTXO. */ const fixUTXO = (utxo, decimals) => (Object.assign(Object.assign({}, utxo), { amount: (0, exports.fixValue)(utxo.amount, decimals) })); exports.fixUTXO = fixUTXO; /** * fixUTXOs maps over an array of UTXOs and calls {{fixValue}}. */ const fixUTXOs = (utxos, decimals) => { return utxos.map((utxo) => (0, exports.fixUTXO)(utxo, decimals)); }; exports.fixUTXOs = fixUTXOs; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXR4by5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdXR4by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxnRUFBcUM7QUFVckM7Ozs7Ozs7OztHQVNHO0FBQ0ksTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFPLEVBQUUsQ0FBTyxFQUFVLEVBQUU7SUFDbEQsNEJBQTRCO0lBQzVCLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFO1FBQ3ZCLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0tBQzlCO0lBQ0QseUJBQXlCO0lBQ3pCLElBQUksQ0FBQyxDQUFDLGFBQWEsS0FBSyxDQUFDLENBQUMsYUFBYSxFQUFFO1FBQ3JDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDO0tBQzVDO0lBQ0QsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekMsQ0FBQyxDQUFDO0FBVlcsUUFBQSxTQUFTLGFBVXBCO0FBRUY7Ozs7Ozs7OztHQVNHO0FBQ0ksTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFhLEVBQUUsUUFBZ0IsRUFBRSxFQUFFLENBQ3hELElBQUksc0JBQVMsQ0FBQyxLQUFLLENBQUM7S0FDZixZQUFZLENBQUMsSUFBSSxzQkFBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUN6RCxhQUFhLENBQUMsQ0FBQyxDQUFDO0tBQ2hCLFFBQVEsRUFBRSxDQUFDO0FBSlAsUUFBQSxRQUFRLFlBSUQ7QUFFcEI7O0dBRUc7QUFDSSxNQUFNLE9BQU8sR0FBRyxDQUFDLElBQVUsRUFBRSxRQUFnQixFQUFRLEVBQUUsQ0FBQyxpQ0FDeEQsSUFBSSxLQUNQLE1BQU0sRUFBRSxJQUFBLGdCQUFRLEVBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFDekMsQ0FBQztBQUhVLFFBQUEsT0FBTyxXQUdqQjtBQUVIOztHQUVHO0FBQ0ksTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFzQixFQUFFLFFBQWdCLEVBQUUsRUFBRTtJQUNqRSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUEsZUFBTyxFQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ3hELENBQUMsQ0FBQztBQUZXLFFBQUEsUUFBUSxZQUVuQiJ9