@q-dev/q-js-sdk
Version:
Typescript Library to interact with Q System Contracts
117 lines • 5.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.RootNodesMembershipVotingInstance = void 0;
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(signerOrProvider, address) {
super(signerOrProvider, RootNodesMembershipVotingInstance.abi, address);
}
/**
* [External documentation](@system-contracts-repo/@network/RootsVoting/#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(),
},
},
candidate: proposal.candidate,
replaceDest: proposal.replaceDest,
};
}
/**
* [External documentation](@system-contracts-repo/@network/RootsVoting/#hasrootvetoed)
*/
async hasRootVetoed(proposalId, address) {
return this.instance.hasRootVetoed(proposalId, address);
}
/**
* [External documentation](@system-contracts-repo/@network/RootsVoting/#hasuservoted)
*/
async hasUserVoted(proposalId, address) {
return this.instance.hasUserVoted(proposalId, address);
}
/**
* Calculates proposal count.
* @returns proposal count.
*/
async proposalCount() {
throw Error('"proposalCount" not supported on this kind of contact');
}
/**
* 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 = this.adapter.ZERO_BYTES_32, 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, this.adapter.ZERO_BYTES_32, txOptions);
}
/**
* [External documentation](@system-contracts-repo/@network/RootsVoting/#createproposal)
*/
async createProposal(remark, addressToAdd, addressToRemove, constitutionHash = this.adapter.ZERO_BYTES_32, txOptions) {
return this.submitTransaction('createProposal', [remark, constitutionHash, addressToAdd, addressToRemove], txOptions);
}
/**
* [External documentation](@system-contracts-repo/@network/RootsVoting/#getvotesfor)
*/
async getVotesFor(proposalId) {
return (await this.instance.getVotesFor(proposalId)).toString();
}
/**
* [External documentation](@system-contracts-repo/@network/RootsVoting/#getvotesagainst)
*/
async getVotesAgainst(proposalId) {
return (await this.instance.getVotesAgainst(proposalId)).toString();
}
/**
* [External documentation](@system-contracts-repo/@network/RootsVoting/#isoverruleapplied)
*/
async isOverruleApplied(proposalId) {
return this.instance.isOverruleApplied(proposalId);
}
/**
* [External documentation](@system-contracts-repo/@network/RootsVoting/#skipvetophase)
*/
async skipVetoPhase(proposalId, txOptions) {
return this.submitTransaction('skipVetoPhase', [proposalId], txOptions);
}
}
exports.RootNodesMembershipVotingInstance = RootNodesMembershipVotingInstance;
RootNodesMembershipVotingInstance.registryKey = 'governance.rootNodes.membershipVoting';
RootNodesMembershipVotingInstance.abi = 'RootsVoting.json';
//# sourceMappingURL=RootNodesMembershipVotingInstance.js.map