@ardier16/q-js-sdk
Version:
Typescript Library to interact with Q System Contracts
244 lines • 15.4 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ContractRegistryInstance = void 0;
const SystemContractInstance_1 = require("./SystemContractInstance");
const DefaultAllocationProxyInstance_1 = require("./tokeneconomics/DefaultAllocationProxyInstance");
const RootNodeRewardProxyInstance_1 = require("./tokeneconomics/RootNodeRewardProxyInstance");
const ValidationRewardProxyInstance_1 = require("./tokeneconomics/ValidationRewardProxyInstance");
const ValidationRewardPoolsInstance_1 = require("./tokeneconomics/ValidationRewardPoolsInstance");
const RootNodesInstance_1 = require("./governance/rootNodes/RootNodesInstance");
const RootNodesMembershipVotingInstance_1 = require("./governance/rootNodes/RootNodesMembershipVotingInstance");
const RootNodesSlashingVotingInstance_1 = require("./governance/rootNodes/RootNodesSlashingVotingInstance");
const ValidatorsInstance_1 = require("./governance/validators/ValidatorsInstance");
const ValidatorsSlashingVotingInstance_1 = require("./governance/validators/ValidatorsSlashingVotingInstance");
const ConstitutionInstance_1 = require("./governance/constitution/ConstitutionInstance");
const VotingWeightProxyInstance_1 = require("./governance/VotingWeightProxyInstance");
const EPDRParametersInstance_1 = require("./governance/experts/EPDRParametersInstance");
const EPDRMembershipInstance_1 = require("./governance/experts/EPDRMembershipInstance");
const EPDRMembershipVotingInstance_1 = require("./governance/experts/EPDRMembershipVotingInstance");
const EPDRParametersVotingInstance_1 = require("./governance/experts/EPDRParametersVotingInstance");
const EPRSParametersInstance_1 = require("./governance/experts/EPRSParametersInstance");
const EPRSMembershipInstance_1 = require("./governance/experts/EPRSMembershipInstance");
const EPRSMembershipVotingInstance_1 = require("./governance/experts/EPRSMembershipVotingInstance");
const EPRSParametersVotingInstance_1 = require("./governance/experts/EPRSParametersVotingInstance");
const EPQFIParametersInstance_1 = require("./governance/experts/EPQFIParametersInstance");
const EPQFIMembershipInstance_1 = require("./governance/experts/EPQFIMembershipInstance");
const EPQFIMembershipVotingInstance_1 = require("./governance/experts/EPQFIMembershipVotingInstance");
const QVaultInstance_1 = require("./tokeneconomics/QVaultInstance");
const SystemReserveInstance_1 = require("./tokeneconomics/SystemReserveInstance");
const BorrowingCoreInstance_1 = require("./defi/BorrowingCoreInstance");
const SavingInstance_1 = require("./defi/SavingInstance");
const ERC20Instance_1 = require("./defi/token/ERC20Instance");
const SystemBalanceInstance_1 = require("./defi/SystemBalanceInstance");
const LiquidationAuctionInstance_1 = require("./defi/LiquidationAuctionInstance");
const SystemSurplusAuctionInstance_1 = require("./defi/SystemSurplusAuctionInstance");
const SystemDebtAuctionInstance_1 = require("./defi/SystemDebtAuctionInstance");
const TokenBridgeAdminProxyInstance_1 = require("./defi/TokenBridgeAdminProxyInstance");
const ConstitutionVotingInstance_1 = require("./governance/constitution/ConstitutionVotingInstance");
const EPQFIParametersVotingInstance_1 = require("./governance/experts/EPQFIParametersVotingInstance");
const VestingInstance_1 = require("./tokeneconomics/VestingInstance");
const EmergencyUpdateVotingInstance_1 = require("./governance/EmergencyUpdateVotingInstance");
const GeneralUpdateVotingInstance_1 = require("./governance/GeneralUpdateVotingInstance");
const ValidatorSlashingEscrowInstance_1 = require("./governance/validators/ValidatorSlashingEscrowInstance");
const RootNodeSlashingEscrowInstance_1 = require("./governance/rootNodes/RootNodeSlashingEscrowInstance");
const PushPaymentsInstance_1 = require("./tokeneconomics/PushPaymentsInstance");
const ContractRegistryUpgradeVoting_1 = require("./governance/ContractRegistryUpgradeVoting");
const ContractRegistryAddressVoting_1 = require("./governance/ContractRegistryAddressVoting");
const AccountAliases_1 = require("./governance/AccountAliases");
const defaultAddress = '0xc3E589056Ece16BCB88c6f9318e9a7343b663522';
/**
* Contract registry instance to interact with Contract registry contract.
* See [onchain documentation](@system-contracts-repo/@network/ContractRegistry/) for more details.
*/
class ContractRegistryInstance extends SystemContractInstance_1.SystemContractInstance {
constructor(web3, address) {
super(web3, 'ContractRegistry.json', address || defaultAddress);
}
/**
* [External documentation](@system-contracts-repo/@network/ContractRegistry/#getmaintainers)
*/
async getMaintainers() {
return this.instance.methods.getMaintainers().call();
}
/**
* Retrieve contract balances
* @returns contracts with balance and address
*/
async getSystemContractsAndBalances() {
const systemContractEntries = await this.instance.methods.getContracts().call();
const balances = await this.adapter.getBalances(systemContractEntries.map(e => e[1]));
const systemContracts = systemContractEntries.map((e, i) => {
return {
...balances[i],
registryKey: e[0],
};
});
return systemContracts;
}
/**
* Main method to create instance.
* @param t constructor
* @param registryKey contract registry key
* @returns contract instance
*/
async createInstance(t, registryKey) {
const address = await this.instance.methods.mustGetAddress(registryKey).call();
// console.log(`creating instance for registryKey '${registryKey}' at ${address}`)
return new t(this.adapter.web3, address);
}
async rootNodes() {
const roots = await this.createInstance(RootNodesInstance_1.RootNodesInstance, RootNodesInstance_1.RootNodesInstance.registryKey);
roots.votingWeightProxy = await this.votingWeightProxy();
return roots;
}
async rootNodesMembershipVoting() {
const rootsMV = await this.createInstance(RootNodesMembershipVotingInstance_1.RootNodesMembershipVotingInstance, RootNodesMembershipVotingInstance_1.RootNodesMembershipVotingInstance.registryKey);
rootsMV.votingWeightProxy = await this.votingWeightProxy();
return rootsMV;
}
async rootNodesSlashingVoting() {
const rootsSV = await this.createInstance(RootNodesSlashingVotingInstance_1.RootNodesSlashingVotingInstance, RootNodesSlashingVotingInstance_1.RootNodesSlashingVotingInstance.registryKey);
rootsSV.votingWeightProxy = await this.votingWeightProxy();
return rootsSV;
}
async validators() {
const validators = await this.createInstance(ValidatorsInstance_1.ValidatorsInstance, ValidatorsInstance_1.ValidatorsInstance.registryKey);
validators.votingWeightProxy = await this.votingWeightProxy();
return validators;
}
async validatorsSlashingVoting() {
return this.createInstance(ValidatorsSlashingVotingInstance_1.ValidatorsSlashingVotingInstance, ValidatorsSlashingVotingInstance_1.ValidatorsSlashingVotingInstance.registryKey);
}
async vesting() {
return this.createInstance(VestingInstance_1.VestingInstance, VestingInstance_1.VestingInstance.registryKey);
}
async constitution() {
return this.createInstance(ConstitutionInstance_1.ConstitutionInstance, ConstitutionInstance_1.ConstitutionInstance.registryKey);
}
async constitutionVoting() {
const constitutionVoting = await this.createInstance(ConstitutionVotingInstance_1.ConstitutionVotingInstance, ConstitutionVotingInstance_1.ConstitutionVotingInstance.registryKey);
constitutionVoting.votingWeightProxy = await this.votingWeightProxy();
return constitutionVoting;
}
async votingWeightProxy() {
return this.createInstance(VotingWeightProxyInstance_1.VotingWeightProxyInstance, VotingWeightProxyInstance_1.VotingWeightProxyInstance.registryKey);
}
async defaultAllocationProxy() {
return this.createInstance(DefaultAllocationProxyInstance_1.DefaultAllocationProxyInstance, DefaultAllocationProxyInstance_1.DefaultAllocationProxyInstance.registryKey);
}
async validationRewardProxy() {
return this.createInstance(ValidationRewardProxyInstance_1.ValidationRewardProxyInstance, ValidationRewardProxyInstance_1.ValidationRewardProxyInstance.registryKey);
}
async validationRewardPools() {
return this.createInstance(ValidationRewardPoolsInstance_1.ValidationRewardPoolsInstance, ValidationRewardPoolsInstance_1.ValidationRewardPoolsInstance.registryKey);
}
async rootNodeRewardProxy() {
return this.createInstance(RootNodeRewardProxyInstance_1.RootNodeRewardProxyInstance, RootNodeRewardProxyInstance_1.RootNodeRewardProxyInstance.registryKey);
}
async emergencyUpdateVoting() {
return this.createInstance(EmergencyUpdateVotingInstance_1.EmergencyUpdateVotingInstance, EmergencyUpdateVotingInstance_1.EmergencyUpdateVotingInstance.registryKey);
}
async generalUpdateVoting() {
const generalUpdateVoting = await this.createInstance(GeneralUpdateVotingInstance_1.GeneralUpdateVotingInstance, GeneralUpdateVotingInstance_1.GeneralUpdateVotingInstance.registryKey);
generalUpdateVoting.votingWeightProxy = await this.votingWeightProxy();
return generalUpdateVoting;
}
/** @deprecated use qVault instead */
async piggyBank() {
return this.createInstance(QVaultInstance_1.QVaultInstance, QVaultInstance_1.QVaultInstance.registryKey);
}
async qVault() {
const qVault = await this.createInstance(QVaultInstance_1.QVaultInstance, QVaultInstance_1.QVaultInstance.registryKey);
qVault.votingWeightProxy = await this.votingWeightProxy();
return qVault;
}
async systemReserve() {
return this.createInstance(SystemReserveInstance_1.SystemReserveInstance, SystemReserveInstance_1.SystemReserveInstance.registryKey);
}
async epqfiParameters() {
return this.createInstance(EPQFIParametersInstance_1.EPQFIParametersInstance, EPQFIParametersInstance_1.EPQFIParametersInstance.registryKey);
}
async epqfiParametersVoting() {
return this.createInstance(EPQFIParametersVotingInstance_1.EPQFIParametersVotingInstance, EPQFIParametersVotingInstance_1.EPQFIParametersVotingInstance.registryKey);
}
async epqfiMembershipVoting() {
const epqfiMV = await this.createInstance(EPQFIMembershipVotingInstance_1.EPQFIMembershipVotingInstance, EPQFIMembershipVotingInstance_1.EPQFIMembershipVotingInstance.registryKey);
epqfiMV.votingWeightProxy = await this.votingWeightProxy();
return epqfiMV;
}
async epqfiMembership() {
return this.createInstance(EPQFIMembershipInstance_1.EPQFIMembershipInstance, EPQFIMembershipInstance_1.EPQFIMembershipInstance.registryKey);
}
async epdrParameters() {
return this.createInstance(EPDRParametersInstance_1.EPDRParametersInstance, EPDRParametersInstance_1.EPDRParametersInstance.registryKey);
}
async epdrParametersVoting() {
return this.createInstance(EPDRParametersVotingInstance_1.EPDRParametersVotingInstance, EPDRParametersVotingInstance_1.EPDRParametersVotingInstance.registryKey);
}
async epdrMembership() {
return this.createInstance(EPDRMembershipInstance_1.EPDRMembershipInstance, EPDRMembershipInstance_1.EPDRMembershipInstance.registryKey);
}
async epdrMembershipVoting() {
const epdrMV = await this.createInstance(EPDRMembershipVotingInstance_1.EPDRMembershipVotingInstance, EPDRMembershipVotingInstance_1.EPDRMembershipVotingInstance.registryKey);
epdrMV.votingWeightProxy = await this.votingWeightProxy();
return epdrMV;
}
async eprsParameters() {
return this.createInstance(EPRSParametersInstance_1.EPRSParametersInstance, EPRSParametersInstance_1.EPRSParametersInstance.registryKey);
}
async eprsParametersVoting() {
return this.createInstance(EPRSParametersVotingInstance_1.EPRSParametersVotingInstance, EPRSParametersVotingInstance_1.EPRSParametersVotingInstance.registryKey);
}
async eprsMembership() {
return this.createInstance(EPRSMembershipInstance_1.EPRSMembershipInstance, EPRSMembershipInstance_1.EPRSMembershipInstance.registryKey);
}
async eprsMembershipVoting() {
const eprsMV = await this.createInstance(EPRSMembershipVotingInstance_1.EPRSMembershipVotingInstance, EPRSMembershipVotingInstance_1.EPRSMembershipVotingInstance.registryKey);
eprsMV.votingWeightProxy = await this.votingWeightProxy();
return eprsMV;
}
async borrowingCore(stc) {
return this.createInstance(BorrowingCoreInstance_1.BorrowingCoreInstance, `defi.${stc}.borrowing`);
}
async saving(stc) {
return this.createInstance(SavingInstance_1.SavingInstance, `defi.${stc}.saving`);
}
async stableCoin(stc) {
return this.createInstance(ERC20Instance_1.ERC20Instance, `defi.${stc}.coin`);
}
async systemBalance(stc) {
return this.createInstance(SystemBalanceInstance_1.SystemBalanceInstance, `defi.${stc}.systemBalance`);
}
async liquidationAuction(stc) {
return this.createInstance(LiquidationAuctionInstance_1.LiquidationAuctionInstance, `defi.${stc}.liquidationAuction`);
}
async systemSurplusAuction(stc) {
return this.createInstance(SystemSurplusAuctionInstance_1.SystemSurplusAuctionInstance, `defi.${stc}.systemSurplusAuction`);
}
async systemDebtAuction(stc) {
return this.createInstance(SystemDebtAuctionInstance_1.SystemDebtAuctionInstance, `defi.${stc}.systemDebtAuction`);
}
async validatorSlashingEscrow() {
return this.createInstance(ValidatorSlashingEscrowInstance_1.ValidatorSlashingEscrowInstance, ValidatorSlashingEscrowInstance_1.ValidatorSlashingEscrowInstance.registryKey);
}
async rootNodeSlashingEscrow() {
return this.createInstance(RootNodeSlashingEscrowInstance_1.RootNodeSlashingEscrowInstance, RootNodeSlashingEscrowInstance_1.RootNodeSlashingEscrowInstance.registryKey);
}
async pushPayments() {
return this.createInstance(PushPaymentsInstance_1.PushPaymentsInstance, PushPaymentsInstance_1.PushPaymentsInstance.registryKey);
}
async tokenBridgeAdminProxy() {
return this.createInstance(TokenBridgeAdminProxyInstance_1.TokenBridgeAdminProxyInstance, TokenBridgeAdminProxyInstance_1.TokenBridgeAdminProxyInstance.registryKey);
}
async upgradeVoting() {
return this.createInstance(ContractRegistryUpgradeVoting_1.ContractRegistryUpgradeVotingInstance, ContractRegistryUpgradeVoting_1.ContractRegistryUpgradeVotingInstance.registryKey);
}
async addressVoting() {
return this.createInstance(ContractRegistryAddressVoting_1.ContractRegistryAddressVotingInstance, ContractRegistryAddressVoting_1.ContractRegistryAddressVotingInstance.registryKey);
}
async accountAliases() {
return this.createInstance(AccountAliases_1.AccountAliasesInstance, AccountAliases_1.AccountAliasesInstance.registryKey);
}
}
exports.ContractRegistryInstance = ContractRegistryInstance;
//# sourceMappingURL=ContractRegistryInstance.js.map