UNPKG

@superfluid-finance/sdk-core

Version:
76 lines 3.65 kB
import { ethers } from "ethers"; import { SuperfluidGovernanceII__factory, } from "./typechain-types"; export default class Governance { constructor(hostAddress, governanceAddress) { /** * Returns the 3Ps config for the specified token (or default) - the liquidation period and patrician period * @see https://docs.superfluid.finance/superfluid/sentinels/liquidations-and-toga * @param providerOrSigner a provider or signer for executing a web3 call * @param token specified governance parameter token * @returns {Object} liquidationPeriod and patricianPeriod as strings */ this.getPPPConfig = async ({ providerOrSigner, token = ethers.constants.AddressZero, }) => { const { liquidationPeriod, patricianPeriod } = await this.contract .connect(providerOrSigner) .getPPPConfig(this.hostAddress, token); return { liquidationPeriod: liquidationPeriod.toString(), patricianPeriod: patricianPeriod.toString(), }; }; /** * Returns the reward address for the specified token (or default) * @param providerOrSigner a provider or signer for executing a web3 call * @param token specified governance parameter token * @returns {string} the reward address */ this.getRewardAddress = async ({ providerOrSigner, token = ethers.constants.AddressZero, }) => { return await this.contract .connect(providerOrSigner) .getRewardAddress(this.hostAddress, token); }; /** * Returns the minimum deposit for the specified token (or default) * @param providerOrSigner a provider or signer for executing a web3 call * @param token specified governance parameter token * @returns {string} minimum deposit */ this.getMinimumDeposit = async ({ providerOrSigner, token = ethers.constants.AddressZero, }) => { const superTokenMinimumDeposit = await this.contract .connect(providerOrSigner) .getSuperTokenMinimumDeposit(this.hostAddress, token); return superTokenMinimumDeposit.toString(); }; /** * Returns the relevant governance parameters * @param providerOrSigner a provider or signer for executing a web3 call * @param token specified governance parameter token * @returns {Object} liquidationPeriod, patricianPeriod, rewardAddress and minimumDeposit */ this.getGovernanceParameters = async ({ providerOrSigner, token = ethers.constants.AddressZero, }) => { const pppPromise = this.getPPPConfig({ providerOrSigner, token }); const rewardPromise = this.getRewardAddress({ providerOrSigner, token, }); const minimumDepositPromise = this.getMinimumDeposit({ providerOrSigner, token, }); const data = await Promise.all([ pppPromise, rewardPromise, minimumDepositPromise, ]); return { liquidationPeriod: data[0].liquidationPeriod, patricianPeriod: data[0].patricianPeriod, rewardAddress: data[1], minimumDeposit: data[2], }; }; this.contract = new ethers.Contract(governanceAddress, SuperfluidGovernanceII__factory.abi); this.hostAddress = hostAddress; } } //# sourceMappingURL=Governance.js.map