UNPKG

@q-dev/gdk-sdk

Version:

Typescript Library to interact with GDK Contracts

105 lines 5.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DAOInstance = void 0; const index_1 = require("../index"); const utils_1 = require("../utils"); class DAOInstance { constructor(signer, DAORegistry) { this.signer = signer; this.DAORegistry = DAORegistry; this.DAORegistryInstance = new index_1.DAORegistryInstance(this.signer, this.DAORegistry); } async getConstitutionHash() { const storage = await this.getConfParameterStorageInstance(utils_1.DAO_RESERVED_NAME); const hash = (await storage.getDAOParameter(utils_1.CONSTITUTION_HASH_ID)).value; return hash.toString(); } async getPanelVotingTokenAddress(panelName) { const votingInstance = await this.getDAOVotingInstance(panelName); return votingInstance.instance.votingToken(); } async getPermissionManagerInstance() { const permissionManagerAddress = await this.DAORegistryInstance.instance.getPermissionManager(); return new index_1.PermissionManagerInstance(this.signer, permissionManagerAddress); } async getVaultInstance() { const vaultAddress = await this.DAORegistryInstance.instance.getDAOVault(); return new index_1.DAOVaultInstance(this.signer, vaultAddress); } async getDAOVotingInstance(panelName) { const voting = panelName === utils_1.DAO_RESERVED_NAME ? await this.DAORegistryInstance.instance.getGeneralDAOVoting(panelName) : await this.DAORegistryInstance.instance.getExpertsDAOVoting(panelName); return new index_1.DAOVotingInstance(this.signer, voting); } async getExpertsVotingInstance(panelName) { const voting = await this.DAORegistryInstance.instance.getExpertsDAOVoting(panelName); return new index_1.DAOVotingInstance(this.signer, voting); } async getGeneralVotingInstance(panelName) { const voting = await this.DAORegistryInstance.instance.getGeneralDAOVoting(panelName); return new index_1.DAOVotingInstance(this.signer, voting); } async getMemberStorageInstance(panelName) { const memberStorage = await this.DAORegistryInstance.instance.getDAOMemberStorage(panelName); return new index_1.DAOMemberStorageInstance(this.signer, memberStorage); } async getConfParameterStorageInstance(panelName) { const parameterStorage = await this.DAORegistryInstance.instance.getConfDAOParameterStorage(panelName); return new index_1.DAOParameterStorageInstance(this.signer, parameterStorage); } async getRegParameterStorageInstance(panelName) { const parameterStorage = await this.DAORegistryInstance.instance.getRegDAOParameterStorage(panelName); return new index_1.DAOParameterStorageInstance(this.signer, parameterStorage); } async createVoting(votingInstance, params) { return votingInstance.createProposal(params.situation, params.remark, params.callData); } async getAggregatedParameters(panelName) { let regParams = []; if (panelName !== utils_1.DAO_RESERVED_NAME) { const parameterStorage = await this.getRegParameterStorageInstance(panelName); regParams = await parameterStorage.instance.getDAOParameters(); } const confParameterStorage = await this.getConfParameterStorageInstance(panelName); const confParams = await confParameterStorage.instance.getDAOParameters(); return regParams.concat(confParams); } async getProposalTotalParticipate(panelName, proposalId) { const votingInstance = await this.getDAOVotingInstance(panelName); const proposalInfo = await votingInstance.getProposal(proposalId); if (panelName !== utils_1.DAO_RESERVED_NAME && proposalInfo.params.votingType === index_1.VotingType.Restricted) { const memberStorageInstance = await this.getMemberStorageInstance(panelName); return await memberStorageInstance.instance.getMembersCount(); } const daoVaultInstance = await this.getVaultInstance(); const token = await votingInstance.instance.votingToken(); return daoVaultInstance.instance.getTokenSupply(token); } /** * Checks if the DAO supports external links in voting situations. * * This method verifies if the DAO's voting contract can handle external links associated with voting proposals. * It returns true if the DAO's contract has been updated to support this feature (or it was initially deployed * with support for external links). * * Note: Older contract versions, which were created before the introduction of external link support, will cause * this method to throw an error and return false. * * @returns {Promise<boolean>} True if external links are supported, false otherwise. */ async doesDaoSupportExternalLinks() { try { const votingInstance = await this.getGeneralVotingInstance(utils_1.DAO_RESERVED_NAME); // Attempt to access a feature specific to external link support await votingInstance.instance.proposalSituationLink(0); return true; } catch (error) { console.error(`Error checking external link support in DAO: ${error.message}`); return false; } } } exports.DAOInstance = DAOInstance; //# sourceMappingURL=DAOInstance.js.map