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