UNPKG

@q-dev/q-js-sdk

Version:

Typescript Library to interact with Q System Contracts

117 lines 4.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RootNodesInstance = void 0; const TimeLockHelperInstance_1 = require("../../TimeLockHelperInstance"); /** * Root nodes instance to interact with Root nodes contract. * See [onchain documentation](@system-contracts-repo/@network/Roots/) for more details. * An instance of this class for a deployed network can be obtained via {@link ContractRegistryInstance.rootNodes} */ class RootNodesInstance extends TimeLockHelperInstance_1.TimeLockHelperInstance { constructor(signerOrProvider, address) { super(signerOrProvider, RootNodesInstance.abi, address); } /** * [External documentation](@system-contracts-repo/@network/Roots/#getlockinfo) */ async getLockInfo(who) { return this.votingWeightProxy.getLockInfo(this.address, who); } /** * [External documentation](@system-contracts-repo/@network/Roots/#getslashingproposalids) */ async getSlashingProposalIds(root) { return (await this.instance.getSlashingProposalIds(root)) .map(i => i.toString()); } /** * [External documentation](@system-contracts-repo/@network/Roots/#applyslashing) */ async applySlashing(proposalId, root, amountToSlash, txOptions) { return this.submitTransaction('applySlashing', [proposalId, root, amountToSlash], txOptions); } /** * [External documentation](@system-contracts-repo/@network/Roots/#addslashingproposal) */ async addSlashingProposal(root, slashingProposalId, txOptions) { return this.submitTransaction('addSlashingProposal', [root, slashingProposalId], txOptions); } /** * [External documentation](@system-contracts-repo/@network/Roots/#getmembers) */ async getMembers() { return this.instance.getMembers(); } /** * [External documentation](@system-contracts-repo/@network/Roots/#ismember) */ async isMember(user) { return this.instance.isMember(user); } /** * [External documentation](@system-contracts-repo/@network/Roots/#getsize) */ async getSize() { return (await this.instance.getSize()).toString(); } /** * [External documentation](@system-contracts-repo/@network/Roots/#getlimit) */ async getLimit() { return (await this.instance.getLimit()).toString(); } /** * [External documentation](@system-contracts-repo/@network/Roots/#getrootnodestake) */ async getRootNodeStake(root) { return (await this.instance.getRootNodeStake(root)).toString(); } /** * [External documentation](@system-contracts-repo/@network/Roots/#getstakes) */ async getStakes() { const rawStakes = await this.instance.getStakes(); return rawStakes.map((stake) => ({ root: stake.root, value: stake.value.toString() })); } /** * [External documentation](@system-contracts-repo/@network/Roots/#commitstake) */ async commitStake(txOptions) { return this.submitTransaction('commitStake', [], txOptions); } /** * [External documentation](@system-contracts-repo/@network/Roots/#announcewithdrawal) */ async announceWithdrawal(amount, txOptions) { return this.submitTransaction('announceWithdrawal', [amount], txOptions); } /** * [External documentation](@system-contracts-repo/@network/Roots/#withdraw) */ async withdraw(amount, payTo, txOptions) { return this.submitTransaction('withdraw', [amount, payTo], txOptions); } /** * [External documentation](@system-contracts-repo/@network/Roots/#withdrawals) */ async getWithdrawalInfo(address) { const withdrawalInfo = await this.instance.withdrawals(address); return { endTime: withdrawalInfo.endTime.toString(), amount: withdrawalInfo.amount.toString(), }; } /** * [External documentation](https://q-dev.gitlab.io/system-contracts/latest/Roots/#purgependingslashings) */ async purgePendingSlashings(root, txOptions) { return this.submitTransaction('purgePendingSlashings', [root], txOptions); } } exports.RootNodesInstance = RootNodesInstance; RootNodesInstance.registryKey = 'governance.rootNodes'; RootNodesInstance.abi = 'Roots.json'; //# sourceMappingURL=RootNodesInstance.js.map