UNPKG

@ardier16/q-js-sdk

Version:

Typescript Library to interact with Q System Contracts

103 lines 4.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RootNodesMembershipVotingInstance = void 0; const QthVotingHelperInstance_1 = require("../../QthVotingHelperInstance"); const SystemVotingVetoableInstance_1 = require("../../SystemVotingVetoableInstance"); /** * Root nodes voting instance to interact with Root nodes voting contract. * See [onchain documentation](@system-contracts-repo/@network/RootsVoting/) for more details. * An instance of this class for a deployed network can be obtained via {@link ContractRegistryInstance.rootNodesMembershipVoting} */ class RootNodesMembershipVotingInstance extends SystemVotingVetoableInstance_1.SystemVotingVetoableInstance { constructor(web3, address) { super(web3, RootNodesMembershipVotingInstance.abi, address); this.qthVotingHelper = new QthVotingHelperInstance_1.QthVotingHelperInstance(web3, RootNodesMembershipVotingInstance.abi, address); } /** * [External documentation](@system-contracts-repo/@network/RootsVoting/#proposals) */ async getProposal(proposalId) { const raw = await this.instance.methods.proposals(proposalId).call(); return raw; } /** * [External documentation](@system-contracts-repo/@network/RootsVoting/#hasrootvetoed) */ async hasRootVetoed(proposalId, address) { return this.instance.methods.hasRootVetoed(proposalId, address).call(); } /** * [External documentation](@system-contracts-repo/@network/RootsVoting/#hasuservoted) */ async hasUserVoted(proposalId, address) { return this.instance.methods.hasUserVoted(proposalId, address).call(); } /** * Calculates proposal count. * @returns proposal count. */ async proposalCount() { return (await this.instance.methods.proposals).length.toString(); } /** * Create proposal for add new member * @param remark proposal remark * @param addressToAdd new member * @param constitutionHash hash * @param txOptions sender parameters * @returns transaction receipt */ async createAddProposal(remark, addressToAdd, constitutionHash = '0x0', txOptions) { return this.createProposal(remark, addressToAdd, this.adapter.ZERO_ADDRESS, constitutionHash, txOptions); } /** * Create proposal for remove member * @param remark proposal remark * @param addressToRemove member to remove * @param txOptions sender parameters * @returns transaction receipt */ async createRemoveProposal(remark, addressToRemove, txOptions) { return this.createProposal(remark, this.adapter.ZERO_ADDRESS, addressToRemove, '0x0', txOptions); } /** * [External documentation](@system-contracts-repo/@network/RootsVoting/#createproposal) */ async createProposal(remark, addressToAdd, addressToRemove, constitutionHash = '0x0', txOptions) { return this.submitTransaction(this.instance.methods.createProposal(remark, constitutionHash, addressToAdd, addressToRemove), txOptions); } /** * [External documentation](@system-contracts-repo/@network/RootsVoting/#getvotesfor) */ async getVotesFor(proposalId) { return this.instance.methods.getVotesFor(proposalId).call(); } /** * [External documentation](@system-contracts-repo/@network/RootsVoting/#getvotesagainst) */ async getVotesAgainst(proposalId) { return this.instance.methods.getVotesAgainst(proposalId).call(); } /** * [External documentation](@system-contracts-repo/@network/RootsVoting/#getvotingweightinfo) */ async getVotingWeightInfo(proposalId, address) { return await this.qthVotingHelper.getVotingWeightInfo(this.votingWeightProxy, proposalId, address, this.hasUserVoted); } /** * [External documentation](@system-contracts-repo/@network/RootsVoting/#isoverruleapplied) */ async isOverruleApplied(proposalId) { return this.instance.methods.isOverruleApplied(proposalId).call(); } /** * [External documentation](@system-contracts-repo/@network/RootsVoting/#skipvetophase) */ async skipVetoPhase(proposalId, txOptions) { return this.submitTransaction(this.instance.methods.skipVetoPhase(proposalId), txOptions); } } exports.RootNodesMembershipVotingInstance = RootNodesMembershipVotingInstance; RootNodesMembershipVotingInstance.registryKey = 'governance.rootNodes.membershipVoting'; RootNodesMembershipVotingInstance.abi = 'RootsVoting.json'; //# sourceMappingURL=RootNodesMembershipVotingInstance.js.map