| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 | "use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.parseEther = exports.formatEther = exports.parseUnits = exports.formatUnits = void 0;/** *  Most interactions with Ethereum requires integer values, which use *  the smallest magnitude unit. * *  For example, imagine dealing with dollars and cents. Since dollars *  are divisible, non-integer values are possible, such as ``$10.77``. *  By using the smallest indivisible unit (i.e. cents), the value can *  be kept as the integer ``1077``. * *  When receiving decimal input from the user (as a decimal string), *  the value should be converted to an integer and when showing a user *  a value, the integer value should be converted to a decimal string. * *  This creates a clear distinction, between values to be used by code *  (integers) and values used for display logic to users (decimals). * *  The native unit in Ethereum, //ether// is divisible to 18 decimal places, *  where each individual unit is called a //wei//. * *  @_subsection api/utils:Unit Conversion  [about-units] */const errors_js_1 = require("./errors.js");const fixednumber_js_1 = require("./fixednumber.js");const maths_js_1 = require("./maths.js");const names = [    "wei",    "kwei",    "mwei",    "gwei",    "szabo",    "finney",    "ether",];/** *  Converts %%value%% into a //decimal string//, assuming %%unit%% decimal *  places. The %%unit%% may be the number of decimal places or the name of *  a unit (e.g. ``"gwei"`` for 9 decimal places). * */function formatUnits(value, unit) {    let decimals = 18;    if (typeof (unit) === "string") {        const index = names.indexOf(unit);        (0, errors_js_1.assertArgument)(index >= 0, "invalid unit", "unit", unit);        decimals = 3 * index;    }    else if (unit != null) {        decimals = (0, maths_js_1.getNumber)(unit, "unit");    }    return fixednumber_js_1.FixedNumber.fromValue(value, decimals, { decimals, width: 512 }).toString();}exports.formatUnits = formatUnits;/** *  Converts the //decimal string// %%value%% to a BigInt, assuming *  %%unit%% decimal places. The %%unit%% may the number of decimal places *  or the name of a unit (e.g. ``"gwei"`` for 9 decimal places). */function parseUnits(value, unit) {    (0, errors_js_1.assertArgument)(typeof (value) === "string", "value must be a string", "value", value);    let decimals = 18;    if (typeof (unit) === "string") {        const index = names.indexOf(unit);        (0, errors_js_1.assertArgument)(index >= 0, "invalid unit", "unit", unit);        decimals = 3 * index;    }    else if (unit != null) {        decimals = (0, maths_js_1.getNumber)(unit, "unit");    }    return fixednumber_js_1.FixedNumber.fromString(value, { decimals, width: 512 }).value;}exports.parseUnits = parseUnits;/** *  Converts %%value%% into a //decimal string// using 18 decimal places. */function formatEther(wei) {    return formatUnits(wei, 18);}exports.formatEther = formatEther;/** *  Converts the //decimal string// %%ether%% to a BigInt, using 18 *  decimal places. */function parseEther(ether) {    return parseUnits(ether, 18);}exports.parseEther = parseEther;//# sourceMappingURL=units.js.map
 |