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