UNPKG

@firmachain/firma-js

Version:

The Official FirmaChain Javascript SDK written in Typescript

919 lines 54.4 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 __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (g && (g = 0, op[0] && (_ = 0)), _) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; var __read = (this && this.__read) || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.FirmaGovService = void 0; var gov_1 = require("./firmachain/gov"); var any_1 = require("./firmachain/google/protobuf/any"); var FirmaUtil_1 = require("./FirmaUtil"); var gov_2 = require("cosmjs-types/cosmos/gov/v1beta1/gov"); var tx_1 = require("cosmjs-types/cosmos/staking/v1beta1/tx"); var fast_deep_equal_1 = __importDefault(require("fast-deep-equal")); // temporarly using kintsugi-tech/cosmjs-types - this will be returned to original cosmjs-types after the PR is merged var tx_2 = require("@kintsugi-tech/cosmjs-types/cosmos/gov/v1/tx"); var tx_3 = require("@kintsugi-tech/cosmjs-types/cosmos/upgrade/v1beta1/tx"); var tx_4 = require("@kintsugi-tech/cosmjs-types/cosmos/distribution/v1beta1/tx"); var FirmaGovService = /** @class */ (function () { function FirmaGovService(config) { this.config = config; } FirmaGovService.prototype.getGasEstimationVote = function (wallet, proposalId, option, txMisc) { if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var bigIntId, txRaw, error_1; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); bigIntId = BigInt(proposalId); return [4 /*yield*/, this.getSignedTxVote(wallet, bigIntId, option, txMisc)]; case 1: txRaw = _a.sent(); return [4 /*yield*/, FirmaUtil_1.FirmaUtil.estimateGas(txRaw)]; case 2: return [2 /*return*/, _a.sent()]; case 3: error_1 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_1); throw error_1; case 4: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.getGasEstimationDeposit = function (wallet, proposalId, amount, txMisc) { if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var bigIntId, txRaw, error_2; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); bigIntId = BigInt(proposalId); return [4 /*yield*/, this.getSignedTxDeposit(wallet, bigIntId, amount, txMisc)]; case 1: txRaw = _a.sent(); return [4 /*yield*/, FirmaUtil_1.FirmaUtil.estimateGas(txRaw)]; case 2: return [2 /*return*/, _a.sent()]; case 3: error_2 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_2); throw error_2; case 4: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.getGasEstimationSubmitSoftwareUpgradeProposal = function (wallet, title, summary, initialDepositFCT, plan, metadata, txMisc) { if (metadata === void 0) { metadata = ""; } if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var message, txRaw, error_3; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); message = { typeUrl: "/cosmos.upgrade.v1beta1.MsgSoftwareUpgrade", value: tx_3.MsgSoftwareUpgrade.encode(tx_3.MsgSoftwareUpgrade.fromPartial({ authority: FirmaGovService.GOV_AUTHORITY, plan: plan })).finish() }; return [4 /*yield*/, this.getSignedTxSubmitSoftwareUpgradeProposal(wallet, title, summary, initialDepositFCT, [message], metadata, txMisc)]; case 1: txRaw = _a.sent(); return [4 /*yield*/, FirmaUtil_1.FirmaUtil.estimateGas(txRaw)]; case 2: return [2 /*return*/, _a.sent()]; case 3: error_3 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_3); throw error_3; case 4: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.getGasEstimationSubmitStakingParamsUpdateProposal = function (wallet, title, summary, initialDepositFCT, params, metadata, txMisc) { if (metadata === void 0) { metadata = ""; } if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var requestedParams, fromPartialParams, message, txRaw, error_4; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); requestedParams = { authority: FirmaGovService.GOV_AUTHORITY, params: params }; fromPartialParams = tx_1.MsgUpdateParams.fromPartial({ authority: FirmaGovService.GOV_AUTHORITY, params: params }); if (!(0, fast_deep_equal_1.default)(requestedParams.params, fromPartialParams.params)) { throw new Error("All staking parameters must be provided. Use Staking.getParamsAsStakingParams() to get current values and override only the parameters you want to change."); } message = { typeUrl: "/cosmos.staking.v1beta1.MsgUpdateParams", value: tx_1.MsgUpdateParams.encode(tx_1.MsgUpdateParams.fromPartial({ authority: FirmaGovService.GOV_AUTHORITY, params: params })).finish() }; return [4 /*yield*/, this.getSignedTxSubmitStakingParamsUpdateProposal(wallet, title, summary, initialDepositFCT, [message], metadata, txMisc)]; case 1: txRaw = _a.sent(); return [4 /*yield*/, FirmaUtil_1.FirmaUtil.estimateGas(txRaw)]; case 2: return [2 /*return*/, _a.sent()]; case 3: error_4 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_4); throw error_4; case 4: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.getGasEstimationSubmitGovParamsUpdateProposal = function (wallet, title, summary, initialDepositFCT, params, metadata, txMisc) { if (metadata === void 0) { metadata = ""; } if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var requestedParams, fromPartialParams, message, txRaw, error_5; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); requestedParams = { authority: FirmaGovService.GOV_AUTHORITY, params: params }; fromPartialParams = tx_2.MsgUpdateParams.fromPartial({ authority: FirmaGovService.GOV_AUTHORITY, params: params }); if (!(0, fast_deep_equal_1.default)(requestedParams.params, fromPartialParams.params)) { throw new Error("All governance parameters must be provided. Use getParamAsGovParams() to get current values and override only the parameters you want to change."); } message = { typeUrl: "/cosmos.gov.v1.MsgUpdateParams", value: tx_2.MsgUpdateParams.encode(tx_2.MsgUpdateParams.fromPartial({ authority: FirmaGovService.GOV_AUTHORITY, params: params })).finish() }; return [4 /*yield*/, this.getSignedTxSubmitGovParamsUpdateProposal(wallet, title, summary, initialDepositFCT, [message], metadata, txMisc)]; case 1: txRaw = _a.sent(); return [4 /*yield*/, FirmaUtil_1.FirmaUtil.estimateGas(txRaw)]; case 2: return [2 /*return*/, _a.sent()]; case 3: error_5 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_5); throw error_5; case 4: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.getGasEstimationSubmitCommunityPoolSpendProposal = function (wallet, title, summary, initialDepositFCT, amountFCT, recipient, txMisc) { if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var amount, message, txRaw, error_6; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); amount = FirmaUtil_1.FirmaUtil.getUFCTStringFromFCT(amountFCT); message = { typeUrl: "/cosmos.distribution.v1beta1.MsgCommunityPoolSpend", value: Uint8Array.from(tx_4.MsgCommunityPoolSpend.encode(tx_4.MsgCommunityPoolSpend.fromPartial({ authority: FirmaGovService.GOV_AUTHORITY, recipient: recipient, amount: [{ denom: this.config.denom, amount: amount.toString() }] })).finish()) }; return [4 /*yield*/, this.getSignedTxSubmitCommunityPoolSpendProposal(wallet, title, summary, initialDepositFCT, [message], recipient, txMisc)]; case 1: txRaw = _a.sent(); return [4 /*yield*/, FirmaUtil_1.FirmaUtil.estimateGas(txRaw)]; case 2: return [2 /*return*/, _a.sent()]; case 3: error_6 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_6); throw error_6; case 4: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.getGasEstimationSubmitTextProposal = function (wallet, title, description, initialDepositFCT, txMisc) { if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var txRaw, error_7; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); return [4 /*yield*/, this.getSignedTxSubmitTextProposal(wallet, title, description, initialDepositFCT, txMisc)]; case 1: txRaw = _a.sent(); return [4 /*yield*/, FirmaUtil_1.FirmaUtil.estimateGas(txRaw)]; case 2: return [2 /*return*/, _a.sent()]; case 3: error_7 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_7); throw error_7; case 4: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.getGasEstimationCancelProposal = function (wallet, proposalId, txMisc) { if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var txRaw, error_8; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); return [4 /*yield*/, this.getSignedTxCancelProposal(wallet, proposalId, txMisc)]; case 1: txRaw = _a.sent(); return [4 /*yield*/, FirmaUtil_1.FirmaUtil.estimateGas(txRaw)]; case 2: return [2 /*return*/, _a.sent()]; case 3: error_8 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_8); throw error_8; case 4: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.getSignedTxSubmitTextProposal = function (wallet, title, description, initialDepositFCT, txMisc) { if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var sendAmount, proposal, content, proposer, message, txClient, error_9; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); sendAmount = { denom: this.config.denom, amount: FirmaUtil_1.FirmaUtil.getUFCTStringFromFCT(initialDepositFCT) }; proposal = gov_2.TextProposal.fromPartial({ title: title, description: description, }); content = any_1.Any.fromPartial({ typeUrl: "/cosmos.gov.v1beta1.TextProposal", value: Uint8Array.from(gov_2.TextProposal.encode(proposal).finish()), }); return [4 /*yield*/, wallet.getAddress()]; case 1: proposer = _a.sent(); message = gov_1.GovTxClient.msgSubmitProposal({ content: content, initialDeposit: [sendAmount], proposer: proposer }); txClient = new gov_1.GovTxClient(wallet, this.config.rpcAddress); return [4 /*yield*/, txClient.sign([message], (0, FirmaUtil_1.getSignAndBroadcastOption)(this.config.denom, txMisc))]; case 2: return [2 /*return*/, _a.sent()]; case 3: error_9 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_9); throw error_9; case 4: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.getSignedTxSubmitSoftwareUpgradeProposal = function (wallet, title, summary, initialDepositFCT, messages, metadata, txMisc) { if (metadata === void 0) { metadata = ""; } if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var proposer, initialDeposit, txClient, message, error_10; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); return [4 /*yield*/, wallet.getAddress()]; case 1: proposer = _a.sent(); initialDeposit = [{ amount: FirmaUtil_1.FirmaUtil.getUFCTStringFromFCT(initialDepositFCT), denom: this.config.denom }]; txClient = new gov_1.GovTxClient(wallet, this.config.rpcAddress); message = gov_1.GovTxClient.v1MsgSubmitProposal({ title: title, summary: summary, metadata: metadata, messages: messages, proposer: proposer, initialDeposit: initialDeposit, expedited: false }); return [4 /*yield*/, txClient.sign([message], (0, FirmaUtil_1.getSignAndBroadcastOption)(this.config.denom, txMisc))]; case 2: return [2 /*return*/, _a.sent()]; case 3: error_10 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_10); throw error_10; case 4: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.getSignedTxSubmitStakingParamsUpdateProposal = function (wallet, title, summary, initialDepositFCT, messages, metadata, txMisc) { if (metadata === void 0) { metadata = ""; } if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var proposer, initialDeposit, txClient, message, error_11; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); return [4 /*yield*/, wallet.getAddress()]; case 1: proposer = _a.sent(); initialDeposit = [{ amount: FirmaUtil_1.FirmaUtil.getUFCTStringFromFCT(initialDepositFCT), denom: this.config.denom }]; txClient = new gov_1.GovTxClient(wallet, this.config.rpcAddress); message = gov_1.GovTxClient.v1MsgSubmitProposal({ title: title, summary: summary, metadata: metadata, messages: messages, proposer: proposer, initialDeposit: initialDeposit, expedited: false }); return [4 /*yield*/, txClient.sign([message], (0, FirmaUtil_1.getSignAndBroadcastOption)(this.config.denom, txMisc))]; case 2: return [2 /*return*/, _a.sent()]; case 3: error_11 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_11); throw error_11; case 4: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.getSignedTxSubmitGovParamsUpdateProposal = function (wallet, title, summary, initialDepositFCT, messages, metadata, txMisc) { if (metadata === void 0) { metadata = ""; } if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var proposer, initialDeposit, txClient, message, error_12; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); return [4 /*yield*/, wallet.getAddress()]; case 1: proposer = _a.sent(); initialDeposit = [{ amount: FirmaUtil_1.FirmaUtil.getUFCTStringFromFCT(initialDepositFCT), denom: this.config.denom }]; txClient = new gov_1.GovTxClient(wallet, this.config.rpcAddress); message = gov_1.GovTxClient.v1MsgSubmitProposal({ title: title, summary: summary, metadata: metadata, messages: messages, proposer: proposer, initialDeposit: initialDeposit, expedited: false }); return [4 /*yield*/, txClient.sign([message], (0, FirmaUtil_1.getSignAndBroadcastOption)(this.config.denom, txMisc))]; case 2: return [2 /*return*/, _a.sent()]; case 3: error_12 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_12); throw error_12; case 4: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.getSignedTxSubmitCommunityPoolSpendProposal = function (wallet, title, summary, initialDepositFCT, messages, metadata, txMisc) { if (metadata === void 0) { metadata = ""; } if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var proposer, initialDeposit, txClient, message, error_13; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); return [4 /*yield*/, wallet.getAddress()]; case 1: proposer = _a.sent(); initialDeposit = [{ amount: FirmaUtil_1.FirmaUtil.getUFCTStringFromFCT(initialDepositFCT), denom: this.config.denom }]; txClient = new gov_1.GovTxClient(wallet, this.config.rpcAddress); message = gov_1.GovTxClient.v1MsgSubmitProposal({ title: title, summary: summary, metadata: metadata, messages: messages, proposer: proposer, initialDeposit: initialDeposit, expedited: false }); return [4 /*yield*/, txClient.sign([message], (0, FirmaUtil_1.getSignAndBroadcastOption)(this.config.denom, txMisc))]; case 2: return [2 /*return*/, _a.sent()]; case 3: error_13 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_13); throw error_13; case 4: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.getSignedTxCancelProposal = function (wallet, proposalId, txMisc) { if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var proposer, txClient, message; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, wallet.getAddress()]; case 1: proposer = _a.sent(); txClient = new gov_1.GovTxClient(wallet, this.config.rpcAddress); message = gov_1.GovTxClient.v1MsgCancelProposal({ proposalId: BigInt(proposalId), proposer: proposer }); return [4 /*yield*/, txClient.sign([message], (0, FirmaUtil_1.getSignAndBroadcastOption)(this.config.denom, txMisc))]; case 2: return [2 /*return*/, _a.sent()]; } }); }); }; FirmaGovService.prototype.submitSoftwareUpgradeProposal = function (wallet, title, summary, initialDepositFCT, plan, metadata, txMisc) { if (metadata === void 0) { metadata = ""; } if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var message, txRaw, txClient, error_14; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); message = { typeUrl: "/cosmos.upgrade.v1beta1.MsgSoftwareUpgrade", value: tx_3.MsgSoftwareUpgrade.encode(tx_3.MsgSoftwareUpgrade.fromPartial({ authority: FirmaGovService.GOV_AUTHORITY, plan: plan })).finish() }; return [4 /*yield*/, this.getSignedTxSubmitSoftwareUpgradeProposal(wallet, title, summary, initialDepositFCT, [message], metadata, txMisc)]; case 1: txRaw = _a.sent(); txClient = new gov_1.GovTxClient(wallet, this.config.rpcAddress); return [4 /*yield*/, txClient.broadcast(txRaw)]; case 2: return [2 /*return*/, _a.sent()]; case 3: error_14 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_14); throw error_14; case 4: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.submitStakingParamsUpdateProposal = function (wallet, title, summary, initialDepositFCT, params, metadata, txMisc) { if (metadata === void 0) { metadata = ""; } if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var requestedParams, fromPartialParams, message, txRaw, txClient, error_15; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); requestedParams = { authority: FirmaGovService.GOV_AUTHORITY, params: params }; fromPartialParams = tx_1.MsgUpdateParams.fromPartial({ authority: FirmaGovService.GOV_AUTHORITY, params: params }); if (!(0, fast_deep_equal_1.default)(requestedParams.params, fromPartialParams.params)) { throw new Error("All staking parameters must be provided. Use Staking.getParamsAsStakingParams() to get current values and override only the parameters you want to change."); } message = { typeUrl: "/cosmos.staking.v1beta1.MsgUpdateParams", value: tx_1.MsgUpdateParams.encode(tx_1.MsgUpdateParams.fromPartial({ authority: FirmaGovService.GOV_AUTHORITY, params: params })).finish() }; return [4 /*yield*/, this.getSignedTxSubmitStakingParamsUpdateProposal(wallet, title, summary, initialDepositFCT, [message], metadata, txMisc)]; case 1: txRaw = _a.sent(); txClient = new gov_1.GovTxClient(wallet, this.config.rpcAddress); return [4 /*yield*/, txClient.broadcast(txRaw)]; case 2: return [2 /*return*/, _a.sent()]; case 3: error_15 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_15); throw error_15; case 4: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.submitGovParamsUpdateProposal = function (wallet, title, summary, initialDepositFCT, params, metadata, txmisc) { if (metadata === void 0) { metadata = ""; } if (txmisc === void 0) { txmisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var requestedParams, fromPartialParams, message, txRaw, txClient, error_16; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); requestedParams = { authority: FirmaGovService.GOV_AUTHORITY, params: params }; fromPartialParams = tx_2.MsgUpdateParams.fromPartial({ authority: FirmaGovService.GOV_AUTHORITY, params: params }); if (!(0, fast_deep_equal_1.default)(requestedParams.params, fromPartialParams.params)) { throw new Error("All governance parameters must be provided. Use getParamAsGovParams() to get current values and override only the parameters you want to change."); } message = { typeUrl: "/cosmos.gov.v1.MsgUpdateParams", value: tx_2.MsgUpdateParams.encode(tx_2.MsgUpdateParams.fromPartial({ authority: FirmaGovService.GOV_AUTHORITY, params: params })).finish() }; return [4 /*yield*/, this.getSignedTxSubmitGovParamsUpdateProposal(wallet, title, summary, initialDepositFCT, [message], metadata, txmisc)]; case 1: txRaw = _a.sent(); txClient = new gov_1.GovTxClient(wallet, this.config.rpcAddress); return [4 /*yield*/, txClient.broadcast(txRaw)]; case 2: return [2 /*return*/, _a.sent()]; case 3: error_16 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_16); throw error_16; case 4: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.submitCommunityPoolSpendProposal = function (wallet, title, summary, initialDepositFCT, amountFCT, recipient, metadata, txMisc) { if (metadata === void 0) { metadata = ""; } if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var amount, message, txRaw, txClient, error_17; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); amount = FirmaUtil_1.FirmaUtil.getUFCTStringFromFCT(amountFCT); message = { typeUrl: "/cosmos.distribution.v1beta1.MsgCommunityPoolSpend", value: Uint8Array.from(tx_4.MsgCommunityPoolSpend.encode(tx_4.MsgCommunityPoolSpend.fromPartial({ authority: FirmaGovService.GOV_AUTHORITY, recipient: recipient, amount: [{ denom: this.config.denom, amount: amount.toString() }] })).finish()) }; return [4 /*yield*/, this.getSignedTxSubmitCommunityPoolSpendProposal(wallet, title, summary, initialDepositFCT, [message], metadata, txMisc)]; case 1: txRaw = _a.sent(); txClient = new gov_1.GovTxClient(wallet, this.config.rpcAddress); return [4 /*yield*/, txClient.broadcast(txRaw)]; case 2: return [2 /*return*/, _a.sent()]; case 3: error_17 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_17); throw error_17; case 4: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.submitTextProposal = function (wallet, title, description, initialDeposit, txMisc) { if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var txRaw, txClient, error_18; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); return [4 /*yield*/, this.getSignedTxSubmitTextProposal(wallet, title, description, initialDeposit, txMisc)]; case 1: txRaw = _a.sent(); txClient = new gov_1.GovTxClient(wallet, this.config.rpcAddress); return [4 /*yield*/, txClient.broadcast(txRaw)]; case 2: return [2 /*return*/, _a.sent()]; case 3: error_18 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_18); throw error_18; case 4: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.submitGenericProposal = function (wallet, title, summary, initialDeposit, metadata, msgs, txMisc) { if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var proposer, message, txClient, signed, error_19; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 4, , 5]); return [4 /*yield*/, wallet.getAddress()]; case 1: proposer = _a.sent(); message = { typeUrl: "/cosmos.gov.v1.MsgSubmitProposal", value: tx_2.MsgSubmitProposal.fromPartial({ title: title, summary: summary, metadata: metadata, messages: msgs, proposer: proposer, initialDeposit: initialDeposit, }) }; txClient = new gov_1.GovTxClient(wallet, this.config.rpcAddress); return [4 /*yield*/, txClient.sign([message], (0, FirmaUtil_1.getSignAndBroadcastOption)(this.config.denom, txMisc))]; case 2: signed = _a.sent(); return [4 /*yield*/, txClient.broadcast(signed)]; case 3: return [2 /*return*/, _a.sent()]; case 4: error_19 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_19); throw error_19; case 5: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.cancelProposal = function (wallet, proposalId, txMisc) { if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var txRaw, txClient, error_20; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); return [4 /*yield*/, this.getSignedTxCancelProposal(wallet, proposalId, txMisc)]; case 1: txRaw = _a.sent(); txClient = new gov_1.GovTxClient(wallet, this.config.rpcAddress); return [4 /*yield*/, txClient.broadcast(txRaw)]; case 2: return [2 /*return*/, _a.sent()]; case 3: error_20 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_20); throw error_20; case 4: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.getSignedTxVote = function (wallet, proposalId, option, txMisc) { if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var voter, txClient, message, error_21; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); return [4 /*yield*/, wallet.getAddress()]; case 1: voter = _a.sent(); txClient = new gov_1.GovTxClient(wallet, this.config.rpcAddress); message = gov_1.GovTxClient.v1MsgVote({ proposalId: proposalId, voter: voter, option: option, metadata: "" }); return [4 /*yield*/, txClient.sign([message], (0, FirmaUtil_1.getSignAndBroadcastOption)(this.config.denom, txMisc))]; case 2: return [2 /*return*/, _a.sent()]; case 3: error_21 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_21); throw error_21; case 4: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.vote = function (wallet, proposalId, option, txMisc) { if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var bigIntId, txRaw, txClient, error_22; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); bigIntId = BigInt(proposalId); return [4 /*yield*/, this.getSignedTxVote(wallet, bigIntId, option, txMisc)]; case 1: txRaw = _a.sent(); txClient = new gov_1.GovTxClient(wallet, this.config.rpcAddress); return [4 /*yield*/, txClient.broadcast(txRaw)]; case 2: return [2 /*return*/, _a.sent()]; case 3: error_22 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_22); throw error_22; case 4: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.getSignedTxDeposit = function (wallet, proposalId, amount, txMisc) { if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var depositor, sendAmount, message, txClient, error_23; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); return [4 /*yield*/, wallet.getAddress()]; case 1: depositor = _a.sent(); sendAmount = { denom: this.config.denom, amount: FirmaUtil_1.FirmaUtil.getUFCTStringFromFCT(amount) }; message = gov_1.GovTxClient.v1MsgDeposit({ proposalId: proposalId, depositor: depositor, amount: [sendAmount] }); txClient = new gov_1.GovTxClient(wallet, this.config.rpcAddress); return [4 /*yield*/, txClient.sign([message], (0, FirmaUtil_1.getSignAndBroadcastOption)(this.config.denom, txMisc))]; case 2: return [2 /*return*/, _a.sent()]; case 3: error_23 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_23); throw error_23; case 4: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.deposit = function (wallet, proposalId, amount, txMisc) { if (txMisc === void 0) { txMisc = FirmaUtil_1.DefaultTxMisc; } return __awaiter(this, void 0, void 0, function () { var bigIntId, txRaw, txClient, error_24; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); bigIntId = BigInt(proposalId); return [4 /*yield*/, this.getSignedTxDeposit(wallet, bigIntId, amount, txMisc)]; case 1: txRaw = _a.sent(); txClient = new gov_1.GovTxClient(wallet, this.config.rpcAddress); return [4 /*yield*/, txClient.broadcast(txRaw)]; case 2: return [2 /*return*/, _a.sent()]; case 3: error_24 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_24); throw error_24; case 4: return [2 /*return*/]; } }); }); }; //query FirmaGovService.prototype.getCurrentVoteInfo = function (id) { return __awaiter(this, void 0, void 0, function () { var queryClient, result, error_25; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 2, , 3]); queryClient = new gov_1.GovQueryClient(this.config.restApiAddress); return [4 /*yield*/, queryClient.queryGetCurrentVoteInfo(id)]; case 1: result = _a.sent(); return [2 /*return*/, result]; case 2: error_25 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_25); throw error_25; case 3: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.getParam = function () { return __awaiter(this, void 0, void 0, function () { var queryClient, result, error_26; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 2, , 3]); queryClient = new gov_1.GovQueryClient(this.config.restApiAddress); return [4 /*yield*/, queryClient.queryGetParam()]; case 1: result = _a.sent(); return [2 /*return*/, result]; case 2: error_26 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_26); throw error_26; case 3: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.getParamAsGovParams = function () { return __awaiter(this, void 0, void 0, function () { var queryClient, result, error_27; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 2, , 3]); queryClient = new gov_1.GovQueryClient(this.config.restApiAddress); return [4 /*yield*/, queryClient.queryGetParam()]; case 1: result = _a.sent(); // return as GovParams type return [2 /*return*/, { minDeposit: result.min_deposit, maxDepositPeriod: FirmaUtil_1.FirmaUtil.createDurationFromString(result.max_deposit_period), votingPeriod: FirmaUtil_1.FirmaUtil.createDurationFromString(result.voting_period), quorum: result.quorum, threshold: result.threshold, vetoThreshold: result.veto_threshold, minInitialDepositRatio: result.min_initial_deposit_ratio, proposalCancelRatio: result.proposal_cancel_ratio, proposalCancelDest: result.proposal_cancel_dest, expeditedVotingPeriod: FirmaUtil_1.FirmaUtil.createDurationFromString(result.expedited_voting_period), expeditedThreshold: result.expedited_threshold, expeditedMinDeposit: result.expedited_min_deposit, burnVoteQuorum: result.burn_vote_quorum, burnProposalDepositPrevote: result.burn_proposal_deposit_prevote, burnVoteVeto: result.burn_vote_veto, minDepositRatio: result.min_deposit_ratio }]; case 2: error_27 = _a.sent(); FirmaUtil_1.FirmaUtil.printLog(error_27); throw error_27; case 3: return [2 /*return*/]; } }); }); }; FirmaGovService.prototype.getProposal = function (id) { return __awaiter(this, void 0, void 0, function () { var queryCl