UNPKG

@ledgerhq/coin-hedera

Version:
76 lines 3.21 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getPreloadStrategy = void 0; exports.preload = preload; exports.hydrate = hydrate; const logs_1 = require("@ledgerhq/logs"); const bignumber_js_1 = __importDefault(require("bignumber.js")); const utils_1 = require("./logic/utils"); const api_1 = require("./network/api"); const preload_data_1 = require("./preload-data"); const getPreloadStrategy = () => ({ preloadMaxAge: 15 * 60 * 1000, // 15 minutes }); exports.getPreloadStrategy = getPreloadStrategy; async function preload(currency) { (0, logs_1.log)("hedera/preload", "preloading hedera data..."); const result = await api_1.apiClient.getNodes({ fetchAllPages: true }); const validators = result.nodes.map(mirrorNode => { const minStake = new bignumber_js_1.default(mirrorNode.min_stake); const maxStake = new bignumber_js_1.default(mirrorNode.max_stake); const activeStake = new bignumber_js_1.default(mirrorNode.stake_rewarded); const activeStakePercentage = maxStake.gt(0) ? activeStake.dividedBy(maxStake).multipliedBy(100).dp(0, bignumber_js_1.default.ROUND_CEIL) : new bignumber_js_1.default(0); return { nodeId: mirrorNode.node_id, address: mirrorNode.node_account_id, addressChecksum: (0, utils_1.getChecksum)(mirrorNode.node_account_id), name: (0, utils_1.extractCompanyFromNodeDescription)(mirrorNode.description), minStake, maxStake, activeStake, activeStakePercentage, overstaked: activeStake.gte(maxStake), }; }); const sortedValidators = (0, utils_1.sortValidators)(validators); const data = { validators: sortedValidators, }; (0, preload_data_1.setHederaPreloadData)(data, currency); return data; } function mapRawValidatorToValidator(validatorRaw) { return { nodeId: validatorRaw.nodeId, address: validatorRaw.address, addressChecksum: validatorRaw.addressChecksum, name: validatorRaw.name, minStake: new bignumber_js_1.default(validatorRaw.minStake), maxStake: new bignumber_js_1.default(validatorRaw.maxStake), activeStake: new bignumber_js_1.default(validatorRaw.activeStake), activeStakePercentage: new bignumber_js_1.default(validatorRaw.activeStakePercentage), overstaked: validatorRaw.overstaked, }; } function fromHydratePreloadData(data) { let validators = []; if (data && typeof data === "object" && "validators" in data) { if (Array.isArray(data.validators)) { validators = data.validators.map(mapRawValidatorToValidator); } } return { validators, }; } function hydrate(data, currency) { const hydrated = fromHydratePreloadData(data); (0, logs_1.log)("hedera/preload", `hydrated ${hydrated.validators.length} hedera validators`); (0, preload_data_1.setHederaPreloadData)(hydrated, currency); } //# sourceMappingURL=preload.js.map