UNPKG

2.37 kBJavaScriptView Raw
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5Object.defineProperty(exports, "__esModule", { value: true });
6const bignumber_js_1 = __importDefault(require("bignumber.js"));
7const constants_1 = require("./constants");
8const managers_1 = require("./managers");
9class Bignum extends bignumber_js_1.default {
10}
11Bignum.ZERO = new bignumber_js_1.default(0);
12Bignum.ONE = new bignumber_js_1.default(1);
13exports.Bignum = Bignum;
14Bignum.config({ DECIMAL_PLACES: 0 });
15/**
16 * Get human readable string from satoshis
17 */
18function formatSatoshi(amount) {
19 const localeString = (+amount / constants_1.SATOSHI).toLocaleString("en", {
20 minimumFractionDigits: 0,
21 maximumFractionDigits: 8,
22 });
23 return `${localeString} ${managers_1.configManager.config.client.symbol}`;
24}
25exports.formatSatoshi = formatSatoshi;
26/**
27 * Check if the given block or transaction id is an exception.
28 */
29function isException(blockOrTransaction) {
30 return ["blocks", "transactions"].some(key => {
31 const exceptions = managers_1.configManager.get(`exceptions.${key}`);
32 return Array.isArray(exceptions) && exceptions.includes(blockOrTransaction.id);
33 });
34}
35exports.isException = isException;
36/**
37 * Sort transactions by type, then id.
38 */
39function sortTransactions(transactions) {
40 return transactions.sort((a, b) => {
41 if (a.type < b.type) {
42 return -1;
43 }
44 if (a.type > b.type) {
45 return 1;
46 }
47 if (a.id < b.id) {
48 return -1;
49 }
50 if (a.id > b.id) {
51 return 1;
52 }
53 return 0;
54 });
55}
56exports.sortTransactions = sortTransactions;
57let genesisTransactions;
58let currentNetwork;
59exports.isGenesisTransaction = (id) => {
60 const network = managers_1.configManager.get("pubKeyHash");
61 if (!genesisTransactions || currentNetwork !== network) {
62 currentNetwork = network;
63 genesisTransactions = managers_1.configManager
64 .get("genesisBlock.transactions")
65 .reduce((acc, curr) => Object.assign(acc, { [curr.id]: true }), {});
66 }
67 return genesisTransactions[id];
68};
69exports.maxVendorFieldLength = (height) => managers_1.configManager.getMilestone(height).vendorFieldLength;
70//# sourceMappingURL=utils.js.map
\No newline at end of file