send-crypto
Version:
A minimal JavaScript library / wallet for sending crypto assets
57 lines • 3.69 kB
JavaScript
;
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