@ardier16/q-js-sdk
Version:
Typescript Library to interact with Q System Contracts
103 lines • 4.62 kB
JavaScript
;
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