carbon-js-sdk 0.6.9 → 0.6.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/modules/cdp.d.ts +1 -1
- package/lib/modules/cdp.js +22 -11
- package/lib/modules/test.d.ts +0 -0
- package/lib/modules/test.js +1 -0
- package/package.json +1 -1
package/lib/modules/cdp.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
/// <reference types="long" />
|
|
2
1
|
import { AssetParams, DebtInfo, RateStrategyParams, StablecoinDebtInfo, TokenPrice } from "../codec";
|
|
3
2
|
import { Params } from "../codec/cdp/params";
|
|
4
3
|
import { CarbonTx } from "../util";
|
|
5
4
|
import { BigNumber } from "bignumber.js";
|
|
5
|
+
import Long from "long";
|
|
6
6
|
import { Debt } from "./../codec/cdp/query";
|
|
7
7
|
import BaseModule from "./base";
|
|
8
8
|
export declare class CDPModule extends BaseModule {
|
package/lib/modules/cdp.js
CHANGED
|
@@ -18,11 +18,13 @@ const codec_1 = require("../codec");
|
|
|
18
18
|
const query_1 = require("../codec/cdp/query");
|
|
19
19
|
const tx_1 = require("../codec/cdp/tx");
|
|
20
20
|
const query_2 = require("../codec/cosmos/bank/v1beta1/query");
|
|
21
|
+
const pagination_1 = require("../codec/cosmos/base/query/v1beta1/pagination");
|
|
21
22
|
const constant_1 = require("../constant");
|
|
22
23
|
const util_1 = require("../util");
|
|
23
24
|
const address_1 = require("../util/address");
|
|
24
25
|
const number_1 = require("../util/number");
|
|
25
26
|
const bignumber_js_1 = require("bignumber.js");
|
|
27
|
+
const long_1 = __importDefault(require("long"));
|
|
26
28
|
const query_3 = require("./../codec/cdp/query");
|
|
27
29
|
const base_1 = __importDefault(require("./base"));
|
|
28
30
|
class CDPModule extends base_1.default {
|
|
@@ -667,38 +669,47 @@ class CDPModule extends base_1.default {
|
|
|
667
669
|
const sdk = this.sdkProvider;
|
|
668
670
|
const network = sdk.getConfig().network;
|
|
669
671
|
const collateralPoolAddress = address_1.SWTHAddress.getModuleAddress("collateral_pool", network);
|
|
670
|
-
const
|
|
671
|
-
const
|
|
672
|
+
const cdpModuleBalancesAddress = this.getCdpModuleAddress();
|
|
673
|
+
const maxPageLimit = { pagination: pagination_1.PageRequest.fromPartial({ limit: new long_1.default(10000) }) };
|
|
674
|
+
const collateralPoolBalancePromise = sdk.query.bank.AllBalances(Object.assign(Object.assign({}, maxPageLimit), { address: collateralPoolAddress }));
|
|
675
|
+
const cdpModuleBalancesPromise = sdk.query.bank.AllBalances(Object.assign(Object.assign({}, maxPageLimit), { address: cdpModuleBalancesAddress }));
|
|
676
|
+
const totalSupplyPromise = sdk.query.bank.TotalSupply(query_2.QueryTotalSupplyRequest.fromPartial(Object.assign({}, maxPageLimit)));
|
|
672
677
|
const cdpParamsPromise = sdk.query.cdp.Params(query_1.QueryParamsRequest.fromPartial({}));
|
|
673
|
-
const tokenPriceAllPromise = sdk.query.pricing.TokenPriceAll(codec_1.QueryTokenPriceAllRequest.fromPartial({}));
|
|
674
|
-
const debtInfosPromise = sdk.query.cdp.TokenDebtAll(query_3.QueryTokenDebtAllRequest.fromPartial({}));
|
|
675
|
-
const assetParamsPromise = sdk.query.cdp.AssetAll(query_3.QueryAssetAllRequest.fromPartial({}));
|
|
676
|
-
const rateStrategyPromise = sdk.query.cdp.RateStrategyAll(codec_1.QueryRateStrategyAllRequest.fromPartial({}));
|
|
677
|
-
const [collateralPoolBalances, totalSupply, cdpParams, tokenPriceAll, debtInfosAll, assetParamsAll, rateStrategies] = yield Promise.all([collateralPoolBalancePromise, totalSupplyPromise, cdpParamsPromise, tokenPriceAllPromise, debtInfosPromise, assetParamsPromise, rateStrategyPromise]);
|
|
678
|
+
const tokenPriceAllPromise = sdk.query.pricing.TokenPriceAll(codec_1.QueryTokenPriceAllRequest.fromPartial(Object.assign({}, maxPageLimit)));
|
|
679
|
+
const debtInfosPromise = sdk.query.cdp.TokenDebtAll(query_3.QueryTokenDebtAllRequest.fromPartial(Object.assign({}, maxPageLimit)));
|
|
680
|
+
const assetParamsPromise = sdk.query.cdp.AssetAll(query_3.QueryAssetAllRequest.fromPartial(Object.assign({}, maxPageLimit)));
|
|
681
|
+
const rateStrategyPromise = sdk.query.cdp.RateStrategyAll(codec_1.QueryRateStrategyAllRequest.fromPartial(Object.assign({}, maxPageLimit)));
|
|
682
|
+
const [collateralPoolBalances, totalSupply, cdpParams, tokenPriceAll, debtInfosAll, assetParamsAll, rateStrategies, cdpModuleBalances] = yield Promise.all([collateralPoolBalancePromise, totalSupplyPromise, cdpParamsPromise, tokenPriceAllPromise, debtInfosPromise, assetParamsPromise, rateStrategyPromise, cdpModuleBalancesPromise]);
|
|
678
683
|
const interestFee = (0, number_1.bnOrZero)((_a = cdpParams.params) === null || _a === void 0 ? void 0 : _a.interestFee);
|
|
679
684
|
if (!interestFee)
|
|
680
685
|
throw new Error("unable to retrieve interest fee");
|
|
681
686
|
const tokenPrices = tokenPriceAll.tokenPrices;
|
|
682
687
|
if (!tokenPrices)
|
|
683
688
|
throw new Error("unable to retrieve token prices");
|
|
689
|
+
const moduleBalancesMap = cdpModuleBalances.balances.reduce((prev, moduleBalance) => {
|
|
690
|
+
if (!prev[moduleBalance.denom]) {
|
|
691
|
+
prev[moduleBalance.denom] = moduleBalance;
|
|
692
|
+
}
|
|
693
|
+
return prev;
|
|
694
|
+
}, {});
|
|
684
695
|
const cdpTokenBalances = ((_b = collateralPoolBalances === null || collateralPoolBalances === void 0 ? void 0 : collateralPoolBalances.balances) !== null && _b !== void 0 ? _b : []).filter(balance => TokenClient_1.default.isCdpToken(balance.denom));
|
|
685
696
|
const cdpTokensBalancePromises = cdpTokenBalances.map(token => {
|
|
686
697
|
var _a, _b;
|
|
687
698
|
const underlyingDenom = this.getUnderlyingDenom(token.denom);
|
|
688
699
|
const tokenPrice = tokenPrices.find((price) => price.denom === underlyingDenom);
|
|
689
700
|
const supply = (_a = totalSupply.supply.find((supply) => supply.denom === token.denom)) === null || _a === void 0 ? void 0 : _a.amount;
|
|
690
|
-
const balance =
|
|
701
|
+
const balance = moduleBalancesMap[underlyingDenom].amount;
|
|
691
702
|
const debtInfo = debtInfosAll.debtInfosAll.find((debtInfo) => debtInfo.denom === underlyingDenom);
|
|
692
703
|
const assetParam = assetParamsAll.assetParamsAll.find((assetParam) => assetParam.denom === underlyingDenom);
|
|
693
704
|
const rateStrategy = rateStrategies.rateStrategyParamsAll.find((rateStrategy) => rateStrategy.name === (assetParam === null || assetParam === void 0 ? void 0 : assetParam.rateStrategyName));
|
|
694
|
-
if (!debtInfo || !supply || !tokenPrice || !rateStrategy)
|
|
705
|
+
if (!debtInfo || !supply || !tokenPrice || !rateStrategy || !balance)
|
|
695
706
|
throw new Error("unable to retrieve token info");
|
|
696
707
|
const apy = CDPModule.calculateInterestAPY(debtInfo, rateStrategy);
|
|
697
708
|
const newInterestRate = CDPModule.calculateInterestForTimePeriod(apy, (_b = debtInfo.lastUpdatedTime) !== null && _b !== void 0 ? _b : new Date(0), new Date());
|
|
698
709
|
return this.getTotalTokenDebt(underlyingDenom, debtInfo, interestFee, newInterestRate)
|
|
699
710
|
.then((totalDebt) => {
|
|
700
|
-
const ratio = (0, number_1.bnOrZero)(supply).div((0, number_1.bnOrZero)(totalDebt));
|
|
701
|
-
const actualAmount = (0, number_1.bnOrZero)(
|
|
711
|
+
const ratio = (0, number_1.bnOrZero)(supply).div((0, number_1.bnOrZero)(balance).plus((0, number_1.bnOrZero)(totalDebt)));
|
|
712
|
+
const actualAmount = (0, number_1.bnOrZero)(token.amount).div(ratio);
|
|
702
713
|
return this.getTokenUsdVal(underlyingDenom, actualAmount, tokenPrice);
|
|
703
714
|
});
|
|
704
715
|
});
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|