UNPKG

@q-dev/q-js-sdk

Version:

Typescript Library to interact with Q System Contracts

198 lines 8.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BorrowingCoreInstance = void 0; const SystemContractInstance_1 = require("../SystemContractInstance"); const CompoundRateKeeperInstance_1 = require("../common/CompoundRateKeeperInstance"); /** * Borrowing core instance to interact with Borrowing core contract. * See [onchain documentation](@system-contracts-repo/@network/BorrowingCore/) for more details. * An instance of this class for a deployed network can be obtained via {@link ContractRegistryInstance.borrowingCore} */ class BorrowingCoreInstance extends SystemContractInstance_1.SystemContractInstance { constructor(signerOrProvider, address) { super(signerOrProvider, 'BorrowingCore.json', address); } /** @deprecated use getCompoundRateKeeper */ async compoundRateKeeper(colKey) { return this.instance.compoundRateKeeper(colKey); } /** * [External documentation](@system-contracts-repo/@network/BorrowingCore/#getcompoundratekeeper) */ async getCompoundRateKeeper(colKey) { const compoundRateKeeperAddress = await this.compoundRateKeeper(colKey); return new CompoundRateKeeperInstance_1.CompoundRateKeeperInstance(this.adapter.signerOrProvider, compoundRateKeeperAddress); } /** * [External documentation](@system-contracts-repo/@network/BorrowingCore/#totalstcbackedbycol) */ async totalStcBackedByCol(colKey) { return (await this.instance.totalStcBackedByCol(colKey)).toString(); } /** * [External documentation](@system-contracts-repo/@network/BorrowingCore/#updatecompoundrate) */ async updateCompoundRate(col, txOptions) { return this.submitTransaction('updateCompoundRate', [col], txOptions); } /** * [External documentation](@system-contracts-repo/@network/BorrowingCore/#uservaults) */ async userVaults(address, vaultId) { const vault = await this.instance.userVaults(address, vaultId); return { colKey: vault.colKey, colAsset: vault.colAsset.toString(), normalizedDebt: vault.normalizedDebt.toString(), mintedAmount: vault.mintedAmount.toString(), isLiquidated: vault.isLiquidated, liquidationFullDebt: vault.liquidationFullDebt.toString(), }; } /** * [External documentation](@system-contracts-repo/@network/BorrowingCore/#uservaultscount) */ async userVaultsCount(address) { return (await this.instance.userVaultsCount(address)).toString(); } /** * [External documentation](@system-contracts-repo/@network/BorrowingCore/#createvault) */ async createVault(colKey, txOPtions) { return this.submitTransaction('createVault', [colKey], txOPtions); } /** * [External documentation](@system-contracts-repo/@network/BorrowingCore/#depositcol) */ async depositCol(vaultId, amount, txOptions) { return this.submitTransaction('depositCol', [vaultId, amount], txOptions); } /** * [External documentation](@system-contracts-repo/@network/BorrowingCore/#generatestc) */ async generateStc(vaultId, stcAmount, txOptions) { return this.submitTransaction('generateStc', [vaultId, stcAmount], txOptions); } /** * [External documentation](@system-contracts-repo/@network/BorrowingCore/#clearvault) */ async clearVault(user, vaultId, amount, txOptions) { return this.submitTransaction('clearVault', [user, vaultId, amount], txOptions); } /** * [External documentation](@system-contracts-repo/@network/BorrowingCore/#liquidate) */ async liquidate(user, vaultId, txOptions) { return this.submitTransaction('liquidate', [user, vaultId], txOptions); } /** * [External documentation](@system-contracts-repo/@network/BorrowingCore/#transfercol) */ async transferCol(user, vaultId, recipient, txOptions) { return this.submitTransaction('transferCol', [user, vaultId, recipient], txOptions); } /** * [External documentation](@system-contracts-repo/@network/BorrowingCore/#paybackstc) */ async payBackStc(vaultId, amount, txOptions) { return this.submitTransaction('payBackStc', [vaultId, amount], txOptions); } /** * [External documentation](@system-contracts-repo/@network/BorrowingCore/#withdrawcol) */ async withdrawCol(vaultId, amount, txOptions) { return this.submitTransaction('withdrawCol', [vaultId, amount], txOptions); } /** * [External documentation](@system-contracts-repo/@network/BorrowingCore/#getaggregatedtotals) */ async getAggregatedTotals() { const aggregatedTotals = await this.instance.getAggregatedTotals(); return { outstandingDebt: aggregatedTotals.outstandingDebt.toString(), mintedAmount: aggregatedTotals.mintedAmount.toString(), owedBorrowingFees: aggregatedTotals.owedBorrowingFees.toString(), }; } /** * Retrieve all user vaults * @param address account * @returns user vaults */ async getAllUserVaults(address) { const vaultsCount = Number(await this.getUserVaultsCount(address)); const resultArr = []; for (let i = 0; i < vaultsCount; i++) { resultArr.push(await this.getUserVault(address, i)); } return resultArr; } /** * [External documentation](@system-contracts-repo/@network/BorrowingCore/#uservaults) */ async getUserVault(address, vaultId) { const vault = await this.instance.userVaults(address, vaultId); return { colKey: vault.colKey, colAsset: vault.colAsset.toString(), normalizedDebt: vault.normalizedDebt.toString(), mintedAmount: vault.mintedAmount.toString(), isLiquidated: vault.isLiquidated, liquidationFullDebt: vault.liquidationFullDebt.toString(), }; } /** * [External documentation](@system-contracts-repo/@network/BorrowingCore/#userVaultsCount) */ async getUserVaultsCount(address) { return (await this.instance.userVaultsCount(address)).toString(); } /** * [External documentation](@system-contracts-repo/@network/BorrowingCore/#getvaultstats) */ async getVaultStats(address, vaultId) { const resultArr = await this.instance.getVaultStats(address, vaultId); const colStatsArr = resultArr[0]; const stcStatsArr = resultArr[1]; return { colStats: { key: colStatsArr.key, balance: colStatsArr.balance.toString(), price: colStatsArr.price.toString(), withdrawableAmount: colStatsArr.withdrawableAmount.toString(), liquidationPrice: colStatsArr.liquidationPrice.toString() }, stcStats: { key: stcStatsArr.key, outstandingDebt: stcStatsArr.outstandingDebt.toString(), normalizedDebt: stcStatsArr.normalizedDebt.toString(), compoundRate: stcStatsArr.compoundRate.toString(), lastUpdateOfCompoundRate: stcStatsArr.lastUpdateOfCompoundRate.toString(), borrowingLimit: stcStatsArr.borrowingLimit.toString(), availableToBorrow: stcStatsArr.availableToBorrow.toString(), liquidationLimit: stcStatsArr.liquidationLimit.toString(), borrowingFee: stcStatsArr.borrowingFee.toString(), } }; } /** * [External documentation](@system-contracts-repo/@network/BorrowingCore/#getfulldebt) */ async getFullDebt(address, vaultId) { return (await this.instance.getFullDebt(address, vaultId)).toString(); } /** * [External documentation](@system-contracts-repo/@network/BorrowingCore/#getcurrentcolratio) */ async getCurrentColRatio(address, vaultId) { return (await this.instance.getCurrentColRatio(address, vaultId)).toString(); } /** * [External documentation](@system-contracts-repo/@network/BorrowingCore/#totalStcBackedByCol) */ async getTotalStcBackedByCol(colKey) { return (await this.instance.totalStcBackedByCol(colKey)).toString(); } } exports.BorrowingCoreInstance = BorrowingCoreInstance; //# sourceMappingURL=BorrowingCoreInstance.js.map