UNPKG

@tedcryptoorg/cosmos-signer

Version:

Cosmos Signer - A library for signing transactions for Cosmos SDK chains

57 lines (56 loc) 4.33 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Network = void 0; const cosmos_directory_1 = require("@tedcryptoorg/cosmos-directory"); const stargate_1 = require("@cosmjs/stargate"); const bignumber_js_1 = __importDefault(require("bignumber.js")); class Network { constructor(data) { this.data = data; } static createFromChain(chain_1) { return __awaiter(this, arguments, void 0, function* (chain, txTimeout = 1000, restUrl = undefined, rpcUrl = undefined) { if (typeof chain === 'string') { chain = (yield (new cosmos_directory_1.ChainDirectory().getChainData(chain))).chain; } return new Network(Object.assign(Object.assign({}, chain), { chain_name: chain.name, prettyName: chain.name, name: chain.name, authzAminoSupport: chain.params.authz, prefix: chain.bech32_prefix, txTimeout, coinType: chain.slip44, chainId: chain.chain_id, rpcUrl: rpcUrl !== null && rpcUrl !== void 0 ? rpcUrl : new cosmos_directory_1.CosmosDirectory().rpcUrl(chain.name), restUrl: restUrl !== null && restUrl !== void 0 ? restUrl : new cosmos_directory_1.CosmosDirectory().restUrl(chain.name), gasPriceStep: this.getGasPriceStep(chain), decimals: chain.decimals, coinGeckoId: chain.coingecko_id, authzAminoGenericOnly: true, aminoPreventTypes: [], authzAminoExecPreventTypes: [], authzAminoLiftedValues: true, data: {} })); }); } static getGasPriceStep(chain, gasPrice) { var _a, _b, _c, _d, _e, _f; const feeConfig = (_a = chain.fees.fee_tokens) === null || _a === void 0 ? void 0 : _a.find(el => el.denom === chain.denom); let gasPriceNumber = 0; if (gasPrice) { gasPriceNumber = Number(stargate_1.GasPrice.fromString(gasPrice).amount.toString()); return { low: gasPriceNumber, average: (_b = feeConfig === null || feeConfig === void 0 ? void 0 : feeConfig.average_gas_price) !== null && _b !== void 0 ? _b : gasPriceNumber, high: (_c = feeConfig === null || feeConfig === void 0 ? void 0 : feeConfig.high_gas_price) !== null && _c !== void 0 ? _c : new bignumber_js_1.default(gasPriceNumber).multipliedBy(2).toNumber(), }; } const minimumGasPrice = (_d = feeConfig === null || feeConfig === void 0 ? void 0 : feeConfig.low_gas_price) !== null && _d !== void 0 ? _d : feeConfig === null || feeConfig === void 0 ? void 0 : feeConfig.fixed_min_gas_price; let defaultGasPrice = new bignumber_js_1.default(0.000000025).multipliedBy(new bignumber_js_1.default(10).pow(chain.decimals || 6)).toFixed(14); if (minimumGasPrice !== undefined && new bignumber_js_1.default(minimumGasPrice).isGreaterThan(new bignumber_js_1.default(defaultGasPrice))) { defaultGasPrice = String(minimumGasPrice); } gasPriceNumber = (_e = feeConfig === null || feeConfig === void 0 ? void 0 : feeConfig.average_gas_price) !== null && _e !== void 0 ? _e : Number(defaultGasPrice); return { low: minimumGasPrice !== null && minimumGasPrice !== void 0 ? minimumGasPrice : new bignumber_js_1.default(gasPriceNumber).multipliedBy(0.5).toNumber(), average: gasPriceNumber, high: (_f = feeConfig === null || feeConfig === void 0 ? void 0 : feeConfig.high_gas_price) !== null && _f !== void 0 ? _f : new bignumber_js_1.default(gasPriceNumber).multipliedBy(2).toNumber(), }; } } exports.Network = Network;