@q-dev/q-js-sdk
Version:
Typescript Library to interact with Q System Contracts
92 lines • 4.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ValidatorsSlashingVotingInstance = void 0;
const SlashingVotingHelperInstance_1 = require("../../SlashingVotingHelperInstance");
const SystemVotingInstance_1 = require("../../SystemVotingInstance");
/**
* Validator Slashing Voting instance to interact with Validator Slashing Voting contract.
* See [onchain documentation](@system-contracts-repo/@network/ValidatorsSlashingVoting/) for more details.
* An instance of this class for a deployed network can be obtained via {@link ContractRegistryInstance.validatorsSlashingVoting}
*/
class ValidatorsSlashingVotingInstance extends SystemVotingInstance_1.SystemVotingInstance {
constructor(signerOrProvider, address) {
super(signerOrProvider, ValidatorsSlashingVotingInstance.abi, address);
this.slashingVoting = new SlashingVotingHelperInstance_1.SlashingVotingHelper(signerOrProvider, ValidatorsSlashingVotingInstance.abi, address);
}
/**
* [External documentation](@system-contracts-repo/@network/ValidatorsSlashingVoting/#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(),
},
},
proposer: proposal.proposer,
candidate: proposal.candidate,
amountToSlash: proposal.amountToSlash.toString(),
};
}
/**
* [External documentation](@system-contracts-repo/@network/ValidatorsSlashingVoting/#voted)
*/
async hasUserVoted(proposalId, address) {
return this.instance.voted(proposalId, address);
}
/**
* [External documentation](@system-contracts-repo/@network/ValidatorsSlashingVoting/#proposalcount)
*/
async proposalCount() {
return (await this.instance.proposalCount()).toString();
}
/**
* [External documentation](@system-contracts-repo/@network/ValidatorsSlashingVoting/#createproposal)
*/
async createProposal(remark, candidate, percentage, txOptions) {
return this.submitTransaction('createProposal', [remark, candidate, percentage], txOptions);
}
/**
* [External documentation](@system-contracts-repo/@network/ValidatorsSlashingVoting/#slashingaffectswithdrawal)
*/
async slashingAffectsWithdrawal(proposalId) {
return this.instance.slashingAffectsWithdrawal(proposalId);
}
/**
* [External documentation](@system-contracts-repo/@network/ValidatorsSlashingVoting/#getproposalstarttime)
*/
async getProposalStartTime(proposalId) {
return (await this.instance.getProposalStartTime(proposalId)).toString();
}
/**
* [External documentation](@system-contracts-repo/@network/ValidatorsSlashingVoting/#getslashingvictim)
*/
async getSlashingVictim(proposalId) {
return this.slashingVoting.getSlashingVictim(proposalId);
}
/**
* [External documentation](@system-contracts-repo/@network/ValidatorsSlashingVoting/#getslashingproposer)
*/
async getSlashingProposer(proposalId) {
return this.slashingVoting.getSlashingProposer(proposalId);
}
}
exports.ValidatorsSlashingVotingInstance = ValidatorsSlashingVotingInstance;
ValidatorsSlashingVotingInstance.registryKey = 'governance.validators.slashingVoting';
ValidatorsSlashingVotingInstance.abi = 'ValidatorsSlashingVoting.json';
//# sourceMappingURL=ValidatorsSlashingVotingInstance.js.map