PHP WebShell
Текущая директория: /opt/BitGoJS/modules/sdk-core/dist/src
Просмотр файла: units.js
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.toFullUnits = toFullUnits;
exports.toFullUnitsFixed = toFullUnitsFixed;
exports.toBaseUnits = toBaseUnits;
exports.toMarketValueBaseUnits = toMarketValueBaseUnits;
const bignumber_js_1 = __importDefault(require("bignumber.js"));
const statics_1 = require("@bitgo/statics");
/**
* Converts an amount of coin in base units (such as satoshis, cents, or wei) to full units (such as bitcoin, dollars, or ether)
* @param baseUnits number of base units
* @param coin coin ticker
*/
function toFullUnits(baseUnits, coin) {
return new bignumber_js_1.default(baseUnits).div(10 ** statics_1.coins.get(coin).decimalPlaces).toString();
}
/**
* Converts an amount of coin in base units (such as satoshis, cents, or wei) to full units (such as bitcoin, dollars, or ether) fixed amount
* @param baseUnits number of base units
* @param coin coin ticker
*/
function toFullUnitsFixed(baseUnits, coin) {
const decimalPlaces = statics_1.coins.get(coin).decimalPlaces;
return new bignumber_js_1.default(baseUnits).div(10 ** decimalPlaces).toFixed(decimalPlaces);
}
/**
* Converts an amount of coin in full units (such as bitcoin, dollars, or ether) to base units (such as satoshis, cents, or wei)
* @param fullUnits number of full units
* @param coin coin ticker
*/
function toBaseUnits(fullUnits, coin) {
return new bignumber_js_1.default(fullUnits).times(10 ** statics_1.coins.get(coin).decimalPlaces).toString();
}
/**
* Converts price and quantity for a coin into base units market value
* (note, price might be 2 decimal places longer than priceIn decimal places for base units)
* @param coin - which coin to calculate for
* @param price - price of a unit of the coin specified
* @param quantity - number of coins
* @param priceIn - numerator of trading pair, for example USD of BTC/USD
*/
function toMarketValueBaseUnits(coin, price, quantity, priceIn = 'tsusd') {
const roundFactor = BigInt(1000000);
const priceInBaseUnitsBy100 = Math.round(Number(toBaseUnits(price, priceIn)) * 100);
const decimalPlacesCoinBy100 = BigInt(toBaseUnits(1, coin)) * BigInt(100);
return (roundFactor * BigInt(quantity) * BigInt(priceInBaseUnitsBy100)) / (decimalPlacesCoinBy100 * roundFactor);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdW5pdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFTQSxrQ0FFQztBQU9ELDRDQUdDO0FBT0Qsa0NBRUM7QUFVRCx3REFVQztBQWxERCxnRUFBcUM7QUFFckMsNENBQXVDO0FBRXZDOzs7O0dBSUc7QUFDSCxTQUFnQixXQUFXLENBQUMsU0FBc0MsRUFBRSxJQUFZO0lBQzlFLE9BQU8sSUFBSSxzQkFBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksZUFBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUN0RixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLFNBQXNDLEVBQUUsSUFBWTtJQUNuRixNQUFNLGFBQWEsR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsQ0FBQztJQUNwRCxPQUFPLElBQUksc0JBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUNsRixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxTQUFzQyxFQUFFLElBQVk7SUFDOUUsT0FBTyxJQUFJLHNCQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3hGLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0Isc0JBQXNCLENBQ3BDLElBQVksRUFDWixLQUFrQyxFQUNsQyxRQUFrQyxFQUNsQyxPQUFPLEdBQUcsT0FBTztJQUVqQixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDcEYsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxRSxPQUFPLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEdBQUcsV0FBVyxDQUFDLENBQUM7QUFDbkgsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcblxuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5cbi8qKlxuICogQ29udmVydHMgYW4gYW1vdW50IG9mIGNvaW4gaW4gYmFzZSB1bml0cyAoc3VjaCBhcyBzYXRvc2hpcywgY2VudHMsIG9yIHdlaSkgdG8gZnVsbCB1bml0cyAoc3VjaCBhcyBiaXRjb2luLCBkb2xsYXJzLCBvciBldGhlcilcbiAqIEBwYXJhbSBiYXNlVW5pdHMgbnVtYmVyIG9mIGJhc2UgdW5pdHNcbiAqIEBwYXJhbSBjb2luIGNvaW4gdGlja2VyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0Z1bGxVbml0cyhiYXNlVW5pdHM6IG51bWJlciB8IHN0cmluZyB8IEJpZ051bWJlciwgY29pbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5ldyBCaWdOdW1iZXIoYmFzZVVuaXRzKS5kaXYoMTAgKiogY29pbnMuZ2V0KGNvaW4pLmRlY2ltYWxQbGFjZXMpLnRvU3RyaW5nKCk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gYW1vdW50IG9mIGNvaW4gaW4gYmFzZSB1bml0cyAoc3VjaCBhcyBzYXRvc2hpcywgY2VudHMsIG9yIHdlaSkgdG8gZnVsbCB1bml0cyAoc3VjaCBhcyBiaXRjb2luLCBkb2xsYXJzLCBvciBldGhlcikgZml4ZWQgYW1vdW50XG4gKiBAcGFyYW0gYmFzZVVuaXRzIG51bWJlciBvZiBiYXNlIHVuaXRzXG4gKiBAcGFyYW0gY29pbiBjb2luIHRpY2tlclxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9GdWxsVW5pdHNGaXhlZChiYXNlVW5pdHM6IG51bWJlciB8IHN0cmluZyB8IEJpZ051bWJlciwgY29pbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZGVjaW1hbFBsYWNlcyA9IGNvaW5zLmdldChjb2luKS5kZWNpbWFsUGxhY2VzO1xuICByZXR1cm4gbmV3IEJpZ051bWJlcihiYXNlVW5pdHMpLmRpdigxMCAqKiBkZWNpbWFsUGxhY2VzKS50b0ZpeGVkKGRlY2ltYWxQbGFjZXMpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIGFtb3VudCBvZiBjb2luIGluIGZ1bGwgdW5pdHMgKHN1Y2ggYXMgYml0Y29pbiwgZG9sbGFycywgb3IgZXRoZXIpIHRvIGJhc2UgdW5pdHMgKHN1Y2ggYXMgc2F0b3NoaXMsIGNlbnRzLCBvciB3ZWkpXG4gKiBAcGFyYW0gZnVsbFVuaXRzIG51bWJlciBvZiBmdWxsIHVuaXRzXG4gKiBAcGFyYW0gY29pbiBjb2luIHRpY2tlclxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9CYXNlVW5pdHMoZnVsbFVuaXRzOiBudW1iZXIgfCBzdHJpbmcgfCBCaWdOdW1iZXIsIGNvaW46IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBuZXcgQmlnTnVtYmVyKGZ1bGxVbml0cykudGltZXMoMTAgKiogY29pbnMuZ2V0KGNvaW4pLmRlY2ltYWxQbGFjZXMpLnRvU3RyaW5nKCk7XG59XG5cbi8qKlxuICogQ29udmVydHMgcHJpY2UgYW5kIHF1YW50aXR5IGZvciBhIGNvaW4gaW50byBiYXNlIHVuaXRzIG1hcmtldCB2YWx1ZVxuICogKG5vdGUsIHByaWNlIG1pZ2h0IGJlIDIgZGVjaW1hbCBwbGFjZXMgbG9uZ2VyIHRoYW4gcHJpY2VJbiBkZWNpbWFsIHBsYWNlcyBmb3IgYmFzZSB1bml0cylcbiAqIEBwYXJhbSBjb2luIC0gd2hpY2ggY29pbiB0byBjYWxjdWxhdGUgZm9yXG4gKiBAcGFyYW0gcHJpY2UgLSBwcmljZSBvZiBhIHVuaXQgb2YgdGhlIGNvaW4gc3BlY2lmaWVkXG4gKiBAcGFyYW0gcXVhbnRpdHkgLSBudW1iZXIgb2YgY29pbnNcbiAqIEBwYXJhbSBwcmljZUluIC0gbnVtZXJhdG9yIG9mIHRyYWRpbmcgcGFpciwgZm9yIGV4YW1wbGUgVVNEIG9mIEJUQy9VU0RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvTWFya2V0VmFsdWVCYXNlVW5pdHMoXG4gIGNvaW46IHN0cmluZyxcbiAgcHJpY2U6IG51bWJlciB8IHN0cmluZyB8IEJpZ051bWJlcixcbiAgcXVhbnRpdHk6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCxcbiAgcHJpY2VJbiA9ICd0c3VzZCdcbik6IGJpZ2ludCB7XG4gIGNvbnN0IHJvdW5kRmFjdG9yID0gQmlnSW50KDEwMDAwMDApO1xuICBjb25zdCBwcmljZUluQmFzZVVuaXRzQnkxMDAgPSBNYXRoLnJvdW5kKE51bWJlcih0b0Jhc2VVbml0cyhwcmljZSwgcHJpY2VJbikpICogMTAwKTtcbiAgY29uc3QgZGVjaW1hbFBsYWNlc0NvaW5CeTEwMCA9IEJpZ0ludCh0b0Jhc2VVbml0cygxLCBjb2luKSkgKiBCaWdJbnQoMTAwKTtcbiAgcmV0dXJuIChyb3VuZEZhY3RvciAqIEJpZ0ludChxdWFudGl0eSkgKiBCaWdJbnQocHJpY2VJbkJhc2VVbml0c0J5MTAwKSkgLyAoZGVjaW1hbFBsYWNlc0NvaW5CeTEwMCAqIHJvdW5kRmFjdG9yKTtcbn1cbiJdfQ==Выполнить команду
Для локальной разработки. Не используйте в интернете!