UNPKG

@q-dev/q-js-sdk

Version:

Typescript Library to interact with Q System Contracts

95 lines 4.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExpertsParametersVotingInstance = void 0; const SystemVotingVetoableInstance_1 = require("../../SystemVotingVetoableInstance"); const param_voting_helper_1 = require("../../../utils/param-voting-helper"); /** * Expert parameters voting contract instance to interact with EPDR and EPQFI parameters voting contract. * See [onchain documentation](@system-contracts-repo/@network/ExpertsParametersVoting/) for more details. */ class ExpertsParametersVotingInstance extends SystemVotingVetoableInstance_1.SystemVotingVetoableInstance { constructor() { super(...arguments); this.helper = new param_voting_helper_1.ParamVotingHelper(); } /** * [External documentation](@system-contracts-repo/@network/ExpertsParametersVoting/#hasrootvetoed) */ async hasRootVetoed(proposalId, address) { return this.instance.hasRootVetoed(proposalId, address); } /** * [External documentation](@system-contracts-repo/@network/ExpertsParametersVoting/#hasuservoted) */ async hasUserVoted(proposalId, address) { return this.instance.hasUserVoted(proposalId, address); } /** * [External documentation](@system-contracts-repo/@network/ExpertsParametersVoting/#proposalcount) */ async proposalCount() { return (await this.instance.proposalCount()).toString(); } /** * [External documentation](@system-contracts-repo/@network/ExpertsParametersVoting/#createproposal) */ async createProposal(remark, parameters, txOptions) { const mappedParameters = parameters.map(p => this.helper.mapParameterToOnChainJson(p)); return this.submitTransaction('createProposal', [remark, mappedParameters], txOptions); } /** * [External documentation](@system-contracts-repo/@network/ExpertsParametersVoting/#proposals) */ async getProposal(proposalId) { const proposal = await this.instance.proposals(proposalId); return { base: { remark: proposal.base.remark, executed: proposal.base.executed, params: { votingStartTime: proposal.base.params.votingStartTime.toString(), votingEndTime: proposal.base.params.votingEndTime.toString(), vetoEndTime: proposal.base.params.vetoEndTime.toString(), proposalExecutionP: proposal.base.params.proposalExecutionP.toString(), requiredQuorum: proposal.base.params.requiredQuorum.toString(), requiredMajority: proposal.base.params.requiredMajority.toString(), requiredSMajority: proposal.base.params.requiredSMajority.toString(), requiredSQuorum: proposal.base.params.requiredSQuorum.toString(), }, counters: { weightFor: proposal.base.counters.weightFor.toString(), weightAgainst: proposal.base.counters.weightAgainst.toString(), vetosCount: proposal.base.counters.vetosCount.toString(), }, }, parametersSize: proposal.parametersSize.toString() }; } /** * [External documentation](@system-contracts-repo/@network/ExpertsParametersVoting/#getparametersarr) */ async getParametersArr(proposalId) { const params = await this.instance.getParametersArr(proposalId); return params.map((i) => ({ paramKey: i.paramKey, paramType: i.paramType.toString(), addrValue: i.addrValue, boolValue: i.boolValue, bytes32Value: i.bytes32Value, strValue: i.strValue, uintValue: i.uintValue.toString(), })); } /** * Retrieve proposal parameters * @param proposalId chosen proposal id * @returns proposal parameters */ async getProposedParameters(proposalId) { const rawParameters = await this.getParametersArr(proposalId); const proposedParameters = rawParameters.map(raw => this.helper.mapOnChainJsonToParameter(raw)); return proposedParameters; } } exports.ExpertsParametersVotingInstance = ExpertsParametersVotingInstance; //# sourceMappingURL=ExpertsParametersVotingInstance.js.map