@tedcryptoorg/cosmos-signer
Version:
Cosmos Signer - A library for signing transactions for Cosmos SDK chains
57 lines (56 loc) • 4.33 kB
JavaScript
;
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;