@alphafi/alphafi-sdk 0.0.35 → 0.0.37
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/README.md +15 -0
- package/dist/cjs/common/coins.d.ts +1 -1
- package/dist/cjs/common/coins.d.ts.map +1 -1
- package/dist/cjs/common/coins.js +15 -11
- package/dist/cjs/common/coins.js.map +1 -1
- package/dist/cjs/common/constants.d.ts +436 -32
- package/dist/cjs/common/constants.d.ts.map +1 -1
- package/dist/cjs/common/constants.js +488 -56
- package/dist/cjs/common/constants.js.map +1 -1
- package/dist/cjs/common/maps.d.ts +46 -28
- package/dist/cjs/common/maps.d.ts.map +1 -1
- package/dist/cjs/common/maps.js +358 -227
- package/dist/cjs/common/maps.js.map +1 -1
- package/dist/cjs/common/types.d.ts +59 -47
- package/dist/cjs/common/types.d.ts.map +1 -1
- package/dist/cjs/common/types.js.map +1 -1
- package/dist/cjs/getAllVaults.d.ts.map +1 -1
- package/dist/cjs/getAllVaults.js +5 -2
- package/dist/cjs/getAllVaults.js.map +1 -1
- package/dist/cjs/getVaultBalances.d.ts +2 -1
- package/dist/cjs/getVaultBalances.d.ts.map +1 -1
- package/dist/cjs/getVaultBalances.js +15 -1
- package/dist/cjs/getVaultBalances.js.map +1 -1
- package/dist/cjs/graphql/getMultiReceipts.d.ts.map +1 -1
- package/dist/cjs/graphql/getMultiReceipts.js +4 -0
- package/dist/cjs/graphql/getMultiReceipts.js.map +1 -1
- package/dist/cjs/index.d.ts +7 -4
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +20 -5
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/sui-sdk/events/fetchAfterTransactionEvents.d.ts.map +1 -1
- package/dist/cjs/sui-sdk/events/fetchAfterTransactionEvents.js +2 -2
- package/dist/cjs/sui-sdk/events/fetchAfterTransactionEvents.js.map +1 -1
- package/dist/cjs/sui-sdk/events/fetchAutoCompoundingEvents.d.ts.map +1 -1
- package/dist/cjs/sui-sdk/events/fetchAutoCompoundingEvents.js +2 -2
- package/dist/cjs/sui-sdk/events/fetchAutoCompoundingEvents.js.map +1 -1
- package/dist/cjs/sui-sdk/events/fetchRebalanceEvents.d.ts.map +1 -1
- package/dist/cjs/sui-sdk/events/fetchRebalanceEvents.js +5 -7
- package/dist/cjs/sui-sdk/events/fetchRebalanceEvents.js.map +1 -1
- package/dist/cjs/sui-sdk/functions/fetchUserVaultBalances.d.ts +1 -1
- package/dist/cjs/sui-sdk/functions/fetchUserVaultBalances.d.ts.map +1 -1
- package/dist/cjs/sui-sdk/functions/fetchUserVaultBalances.js +11 -20
- package/dist/cjs/sui-sdk/functions/fetchUserVaultBalances.js.map +1 -1
- package/dist/cjs/sui-sdk/functions/fetchUserVaults.d.ts.map +1 -1
- package/dist/cjs/sui-sdk/functions/fetchUserVaults.js +12 -9
- package/dist/cjs/sui-sdk/functions/fetchUserVaults.js.map +1 -1
- package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.d.ts +8 -23
- package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.d.ts.map +1 -1
- package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.js +157 -141
- package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.js.map +1 -1
- package/dist/cjs/sui-sdk/functions/getReceipts.d.ts +15 -10
- package/dist/cjs/sui-sdk/functions/getReceipts.d.ts.map +1 -1
- package/dist/cjs/sui-sdk/functions/getReceipts.js +274 -190
- package/dist/cjs/sui-sdk/functions/getReceipts.js.map +1 -1
- package/dist/cjs/transactions/alpha.d.ts +4 -0
- package/dist/cjs/transactions/alpha.d.ts.map +1 -0
- package/dist/cjs/transactions/alpha.js +104 -0
- package/dist/cjs/transactions/alpha.js.map +1 -0
- package/dist/cjs/transactions/bluefin.d.ts +15 -0
- package/dist/cjs/transactions/bluefin.d.ts.map +1 -0
- package/dist/cjs/transactions/bluefin.js +457 -0
- package/dist/cjs/transactions/bluefin.js.map +1 -0
- package/dist/cjs/transactions/bucket.d.ts +8 -0
- package/dist/cjs/transactions/bucket.d.ts.map +1 -0
- package/dist/cjs/transactions/bucket.js +131 -0
- package/dist/cjs/transactions/bucket.js.map +1 -0
- package/dist/cjs/transactions/cetus.d.ts +24 -0
- package/dist/cjs/transactions/cetus.d.ts.map +1 -0
- package/dist/cjs/transactions/cetus.js +554 -0
- package/dist/cjs/transactions/cetus.js.map +1 -0
- package/dist/cjs/transactions/collect_rewards.d.ts +3 -0
- package/dist/cjs/transactions/collect_rewards.d.ts.map +1 -0
- package/dist/cjs/transactions/collect_rewards.js +332 -0
- package/dist/cjs/transactions/collect_rewards.js.map +1 -0
- package/dist/cjs/transactions/deposit.d.ts +5 -0
- package/dist/cjs/transactions/deposit.d.ts.map +1 -0
- package/dist/cjs/transactions/deposit.js +57 -0
- package/dist/cjs/transactions/deposit.js.map +1 -0
- package/dist/cjs/transactions/navi.d.ts +9 -0
- package/dist/cjs/transactions/navi.d.ts.map +1 -0
- package/dist/cjs/transactions/navi.js +618 -0
- package/dist/cjs/transactions/navi.js.map +1 -0
- package/dist/cjs/transactions/withdraw.d.ts +5 -0
- package/dist/cjs/transactions/withdraw.d.ts.map +1 -0
- package/dist/cjs/transactions/withdraw.js +52 -0
- package/dist/cjs/transactions/withdraw.js.map +1 -0
- package/dist/cjs/transactions/zapDeposit.d.ts +1 -0
- package/dist/cjs/transactions/zapDeposit.d.ts.map +1 -0
- package/dist/cjs/transactions/zapDeposit.js +730 -0
- package/dist/cjs/transactions/zapDeposit.js.map +1 -0
- package/dist/cjs/utils/clmm/prices.js +9 -9
- package/dist/cjs/utils/clmm/prices.js.map +1 -1
- package/dist/cjs/utils/getHoldersFromTransactionsUtils.d.ts.map +1 -1
- package/dist/cjs/utils/getHoldersFromTransactionsUtils.js +7 -7
- package/dist/cjs/utils/getHoldersFromTransactionsUtils.js.map +1 -1
- package/dist/cjs/utils/hop.js +3 -3
- package/dist/cjs/utils/hop.js.map +1 -1
- package/dist/cjs/utils/prices.d.ts +2 -0
- package/dist/cjs/utils/prices.d.ts.map +1 -1
- package/dist/cjs/utils/prices.js +39 -0
- package/dist/cjs/utils/prices.js.map +1 -1
- package/dist/cjs/utils/userHoldings.d.ts.map +1 -1
- package/dist/cjs/utils/userHoldings.js +18 -18
- package/dist/cjs/utils/userHoldings.js.map +1 -1
- package/dist/esm/common/coins.d.ts +1 -1
- package/dist/esm/common/coins.d.ts.map +1 -1
- package/dist/esm/common/coins.js +14 -10
- package/dist/esm/common/coins.js.map +1 -1
- package/dist/esm/common/constants.d.ts +436 -32
- package/dist/esm/common/constants.d.ts.map +1 -1
- package/dist/esm/common/constants.js +488 -56
- package/dist/esm/common/constants.js.map +1 -1
- package/dist/esm/common/maps.d.ts +46 -28
- package/dist/esm/common/maps.d.ts.map +1 -1
- package/dist/esm/common/maps.js +355 -226
- package/dist/esm/common/maps.js.map +1 -1
- package/dist/esm/common/types.d.ts +59 -47
- package/dist/esm/common/types.d.ts.map +1 -1
- package/dist/esm/common/types.js.map +1 -1
- package/dist/esm/getAllVaults.d.ts.map +1 -1
- package/dist/esm/getAllVaults.js +5 -2
- package/dist/esm/getAllVaults.js.map +1 -1
- package/dist/esm/getVaultBalances.d.ts +2 -1
- package/dist/esm/getVaultBalances.d.ts.map +1 -1
- package/dist/esm/getVaultBalances.js +14 -1
- package/dist/esm/getVaultBalances.js.map +1 -1
- package/dist/esm/graphql/getMultiReceipts.d.ts.map +1 -1
- package/dist/esm/graphql/getMultiReceipts.js +4 -0
- package/dist/esm/graphql/getMultiReceipts.js.map +1 -1
- package/dist/esm/index.d.ts +7 -4
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +7 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/sui-sdk/events/fetchAfterTransactionEvents.d.ts.map +1 -1
- package/dist/esm/sui-sdk/events/fetchAfterTransactionEvents.js +4 -4
- package/dist/esm/sui-sdk/events/fetchAfterTransactionEvents.js.map +1 -1
- package/dist/esm/sui-sdk/events/fetchAutoCompoundingEvents.d.ts.map +1 -1
- package/dist/esm/sui-sdk/events/fetchAutoCompoundingEvents.js +4 -4
- package/dist/esm/sui-sdk/events/fetchAutoCompoundingEvents.js.map +1 -1
- package/dist/esm/sui-sdk/events/fetchRebalanceEvents.d.ts.map +1 -1
- package/dist/esm/sui-sdk/events/fetchRebalanceEvents.js +7 -9
- package/dist/esm/sui-sdk/events/fetchRebalanceEvents.js.map +1 -1
- package/dist/esm/sui-sdk/functions/fetchUserVaultBalances.d.ts +1 -1
- package/dist/esm/sui-sdk/functions/fetchUserVaultBalances.d.ts.map +1 -1
- package/dist/esm/sui-sdk/functions/fetchUserVaultBalances.js +11 -20
- package/dist/esm/sui-sdk/functions/fetchUserVaultBalances.js.map +1 -1
- package/dist/esm/sui-sdk/functions/fetchUserVaults.d.ts.map +1 -1
- package/dist/esm/sui-sdk/functions/fetchUserVaults.js +13 -10
- package/dist/esm/sui-sdk/functions/fetchUserVaults.js.map +1 -1
- package/dist/esm/sui-sdk/functions/getPortfolioAmounts.d.ts +8 -23
- package/dist/esm/sui-sdk/functions/getPortfolioAmounts.d.ts.map +1 -1
- package/dist/esm/sui-sdk/functions/getPortfolioAmounts.js +158 -144
- package/dist/esm/sui-sdk/functions/getPortfolioAmounts.js.map +1 -1
- package/dist/esm/sui-sdk/functions/getReceipts.d.ts +15 -10
- package/dist/esm/sui-sdk/functions/getReceipts.d.ts.map +1 -1
- package/dist/esm/sui-sdk/functions/getReceipts.js +266 -186
- package/dist/esm/sui-sdk/functions/getReceipts.js.map +1 -1
- package/dist/esm/transactions/alpha.d.ts +4 -0
- package/dist/esm/transactions/alpha.d.ts.map +1 -0
- package/dist/esm/transactions/alpha.js +99 -0
- package/dist/esm/transactions/alpha.js.map +1 -0
- package/dist/esm/transactions/bluefin.d.ts +15 -0
- package/dist/esm/transactions/bluefin.d.ts.map +1 -0
- package/dist/esm/transactions/bluefin.js +450 -0
- package/dist/esm/transactions/bluefin.js.map +1 -0
- package/dist/esm/transactions/bucket.d.ts +8 -0
- package/dist/esm/transactions/bucket.d.ts.map +1 -0
- package/dist/esm/transactions/bucket.js +127 -0
- package/dist/esm/transactions/bucket.js.map +1 -0
- package/dist/esm/transactions/cetus.d.ts +24 -0
- package/dist/esm/transactions/cetus.d.ts.map +1 -0
- package/dist/esm/transactions/cetus.js +541 -0
- package/dist/esm/transactions/cetus.js.map +1 -0
- package/dist/esm/transactions/collect_rewards.d.ts +3 -0
- package/dist/esm/transactions/collect_rewards.d.ts.map +1 -0
- package/dist/esm/transactions/collect_rewards.js +329 -0
- package/dist/esm/transactions/collect_rewards.js.map +1 -0
- package/dist/esm/transactions/deposit.d.ts +5 -0
- package/dist/esm/transactions/deposit.d.ts.map +1 -0
- package/dist/esm/transactions/deposit.js +53 -0
- package/dist/esm/transactions/deposit.js.map +1 -0
- package/dist/esm/transactions/navi.d.ts +9 -0
- package/dist/esm/transactions/navi.d.ts.map +1 -0
- package/dist/esm/transactions/navi.js +614 -0
- package/dist/esm/transactions/navi.js.map +1 -0
- package/dist/esm/transactions/withdraw.d.ts +5 -0
- package/dist/esm/transactions/withdraw.d.ts.map +1 -0
- package/dist/esm/transactions/withdraw.js +49 -0
- package/dist/esm/transactions/withdraw.js.map +1 -0
- package/dist/esm/transactions/zapDeposit.d.ts +2 -0
- package/dist/esm/transactions/zapDeposit.d.ts.map +1 -0
- package/dist/esm/transactions/zapDeposit.js +730 -0
- package/dist/esm/transactions/zapDeposit.js.map +1 -0
- package/dist/esm/utils/clmm/prices.js +10 -10
- package/dist/esm/utils/clmm/prices.js.map +1 -1
- package/dist/esm/utils/getHoldersFromTransactionsUtils.d.ts.map +1 -1
- package/dist/esm/utils/getHoldersFromTransactionsUtils.js +9 -9
- package/dist/esm/utils/getHoldersFromTransactionsUtils.js.map +1 -1
- package/dist/esm/utils/hop.js +4 -4
- package/dist/esm/utils/hop.js.map +1 -1
- package/dist/esm/utils/prices.d.ts +2 -0
- package/dist/esm/utils/prices.d.ts.map +1 -1
- package/dist/esm/utils/prices.js +37 -0
- package/dist/esm/utils/prices.js.map +1 -1
- package/dist/esm/utils/userHoldings.d.ts.map +1 -1
- package/dist/esm/utils/userHoldings.js +20 -20
- package/dist/esm/utils/userHoldings.js.map +1 -1
- package/package.json +2 -2
|
@@ -4,22 +4,26 @@ exports.getAlphaPortfolioAmount = getAlphaPortfolioAmount;
|
|
|
4
4
|
exports.getAlphaPortfolioAmountInUSD = getAlphaPortfolioAmountInUSD;
|
|
5
5
|
exports.getPortfolioAmount = getPortfolioAmount;
|
|
6
6
|
exports.getDoubleAssetPortfolioAmountInUSD = getDoubleAssetPortfolioAmountInUSD;
|
|
7
|
+
exports.getNaviLoopingPoolDebt = getNaviLoopingPoolDebt;
|
|
7
8
|
exports.getSingleAssetPortfolioAmount = getSingleAssetPortfolioAmount;
|
|
8
9
|
exports.getSingleAssetPortfolioAmountInUSD = getSingleAssetPortfolioAmountInUSD;
|
|
10
|
+
const tslib_1 = require("tslib");
|
|
9
11
|
const decimal_js_1 = require("decimal.js");
|
|
12
|
+
const index_js_1 = require("../../index.js");
|
|
10
13
|
const getReceipts_js_1 = require("./getReceipts.js");
|
|
11
|
-
const simpleCache_js_1 = require("../../utils/simpleCache.js");
|
|
12
14
|
const coins_js_1 = require("../../common/coins.js");
|
|
13
15
|
const maps_js_1 = require("../../common/maps.js");
|
|
14
16
|
const prices_js_1 = require("../../utils/clmm/prices.js");
|
|
15
17
|
const prices_js_2 = require("../../utils/prices.js");
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
const cetus_sui_clmm_sdk_1 = require("@cetusprotocol/cetus-sui-clmm-sdk");
|
|
19
|
+
const bn_js_1 = tslib_1.__importDefault(require("bn.js"));
|
|
20
|
+
async function getAlphaPortfolioAmount(poolName, options, ignoreCache) {
|
|
21
|
+
const receipts = await (0, getReceipts_js_1.getReceipts)(poolName, options.address, ignoreCache);
|
|
22
|
+
const pool = await (0, getReceipts_js_1.getPool)(poolName, ignoreCache);
|
|
19
23
|
if (!pool) {
|
|
20
24
|
throw new Error("Pool not found");
|
|
21
25
|
}
|
|
22
|
-
const exchangeRate = await (0, getReceipts_js_1.getPoolExchangeRate)(poolName);
|
|
26
|
+
const exchangeRate = await (0, getReceipts_js_1.getPoolExchangeRate)(poolName, ignoreCache);
|
|
23
27
|
let totalXTokens = new decimal_js_1.Decimal(0);
|
|
24
28
|
if (!exchangeRate) {
|
|
25
29
|
return "0"; // if pool has 0 xtokens
|
|
@@ -46,7 +50,7 @@ async function getAlphaPortfolioAmount(poolName, options) {
|
|
|
46
50
|
});
|
|
47
51
|
}
|
|
48
52
|
if (totalXTokens.gt(0)) {
|
|
49
|
-
const poolExchangeRate = await (0, getReceipts_js_1.getPoolExchangeRate)(poolName);
|
|
53
|
+
const poolExchangeRate = await (0, getReceipts_js_1.getPoolExchangeRate)(poolName, ignoreCache);
|
|
50
54
|
if (poolExchangeRate) {
|
|
51
55
|
const tokens = totalXTokens.div(1e9).mul(poolExchangeRate);
|
|
52
56
|
return `${tokens}`;
|
|
@@ -59,8 +63,8 @@ async function getAlphaPortfolioAmount(poolName, options) {
|
|
|
59
63
|
return "0";
|
|
60
64
|
}
|
|
61
65
|
}
|
|
62
|
-
async function getAlphaPortfolioAmountInUSD(poolName, options) {
|
|
63
|
-
const tokens = await getAlphaPortfolioAmount(poolName, options);
|
|
66
|
+
async function getAlphaPortfolioAmountInUSD(poolName, options, ignoreCache) {
|
|
67
|
+
const tokens = await getAlphaPortfolioAmount(poolName, options, ignoreCache);
|
|
64
68
|
const priceOfAlpha = await (0, prices_js_1.getAlphaPrice)();
|
|
65
69
|
if (priceOfAlpha && tokens) {
|
|
66
70
|
let amount = new decimal_js_1.Decimal(tokens);
|
|
@@ -68,71 +72,43 @@ async function getAlphaPortfolioAmountInUSD(poolName, options) {
|
|
|
68
72
|
return amount.toString();
|
|
69
73
|
}
|
|
70
74
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
let
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
const cachedResponse = portfolioAmountCache.get(portfolioAmountCacheKey);
|
|
81
|
-
if (cachedResponse) {
|
|
82
|
-
return cachedResponse;
|
|
83
|
-
}
|
|
84
|
-
let cachedPromise = portfolioAmountPromiseCache.get(portfolioAmountCacheKey);
|
|
85
|
-
if (!cachedPromise) {
|
|
86
|
-
cachedPromise = (async () => {
|
|
87
|
-
const receipts = await (0, getReceipts_js_1.getReceipts)(poolName, options.address);
|
|
88
|
-
let totalXTokens = new decimal_js_1.Decimal(0);
|
|
89
|
-
if (receipts) {
|
|
90
|
-
receipts.forEach((receipt) => {
|
|
91
|
-
const xTokens = receipt.content.fields.xTokenBalance;
|
|
92
|
-
totalXTokens = totalXTokens.add(xTokens);
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
if (totalXTokens.gt(0)) {
|
|
96
|
-
const poolExchangeRate = await (0, getReceipts_js_1.getPoolExchangeRate)(poolName);
|
|
97
|
-
if (poolExchangeRate) {
|
|
98
|
-
const tokens = totalXTokens.mul(poolExchangeRate);
|
|
99
|
-
const poolTokenAmounts = await (0, getReceipts_js_1.getCoinAmountsFromLiquidity)(poolName, tokens.toNumber());
|
|
100
|
-
portfolioAmount = poolTokenAmounts;
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
console.error(`Could not get poolExchangeRate for poolName: ${poolName}`);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
portfolioAmount = [0, 0];
|
|
108
|
-
}
|
|
109
|
-
portfolioAmountCache.set(portfolioAmountCacheKey, portfolioAmount);
|
|
110
|
-
portfolioAmountPromiseCache.delete(portfolioAmountCacheKey); // Remove the promise from cache
|
|
111
|
-
return portfolioAmount;
|
|
112
|
-
})().catch((error) => {
|
|
113
|
-
portfolioAmountPromiseCache.delete(portfolioAmountCacheKey); // Remove the promise from cache
|
|
114
|
-
throw error;
|
|
75
|
+
async function getPortfolioAmount(poolName, address, ignoreCache) {
|
|
76
|
+
let portfolioAmount = ["0", "0"];
|
|
77
|
+
const receipts = await (0, getReceipts_js_1.getReceipts)(poolName, address, ignoreCache);
|
|
78
|
+
let totalXTokens = new decimal_js_1.Decimal(0);
|
|
79
|
+
if (receipts) {
|
|
80
|
+
receipts.forEach((receipt) => {
|
|
81
|
+
const xTokens = receipt.content.fields.xTokenBalance;
|
|
82
|
+
totalXTokens = totalXTokens.add(xTokens);
|
|
115
83
|
});
|
|
116
|
-
portfolioAmountPromiseCache.set(portfolioAmountCacheKey, cachedPromise);
|
|
117
84
|
}
|
|
118
|
-
|
|
85
|
+
if (totalXTokens.gt(0)) {
|
|
86
|
+
const poolExchangeRate = await (0, getReceipts_js_1.getPoolExchangeRate)(poolName, ignoreCache);
|
|
87
|
+
if (poolExchangeRate) {
|
|
88
|
+
const tokens = totalXTokens.mul(poolExchangeRate);
|
|
89
|
+
const poolTokenAmounts = await (0, getReceipts_js_1.getCoinAmountsFromLiquidity)(poolName, tokens.toString(), ignoreCache);
|
|
90
|
+
portfolioAmount = poolTokenAmounts;
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
console.error(`Could not get poolExchangeRate for poolName: ${poolName}`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return portfolioAmount;
|
|
119
97
|
}
|
|
120
|
-
async function getDoubleAssetPortfolioAmountInUSD(poolName,
|
|
98
|
+
async function getDoubleAssetPortfolioAmountInUSD(poolName, address, ignoreCache) {
|
|
121
99
|
if (poolName !== undefined) {
|
|
122
|
-
const amounts = await getPortfolioAmount(poolName,
|
|
100
|
+
const amounts = await getPortfolioAmount(poolName, address, ignoreCache);
|
|
123
101
|
if (amounts !== undefined) {
|
|
124
102
|
const ten = new decimal_js_1.Decimal(10);
|
|
125
|
-
const pool1 = maps_js_1.
|
|
126
|
-
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
const amount0 = new decimal_js_1.Decimal(amounts[0]).div(ten.pow(coins_js_1.coins[pool1].expo));
|
|
130
|
-
const amount1 = new decimal_js_1.Decimal(amounts[1]).div(ten.pow(coins_js_1.coins[pool2].expo));
|
|
103
|
+
const pool1 = maps_js_1.doubleAssetPoolCoinMap[poolName].coin1;
|
|
104
|
+
const pool2 = maps_js_1.doubleAssetPoolCoinMap[poolName].coin2;
|
|
105
|
+
const amount0 = new decimal_js_1.Decimal(amounts[0]).div(ten.pow(coins_js_1.coinsList[pool1].expo));
|
|
106
|
+
const amount1 = new decimal_js_1.Decimal(amounts[1]).div(ten.pow(coins_js_1.coinsList[pool2].expo));
|
|
131
107
|
const tokens = poolName.split("-");
|
|
132
108
|
const [priceOfCoin0, priceOfCoin1] = await (0, prices_js_2.getLatestPrices)([
|
|
133
109
|
`${tokens[0]}/USD`,
|
|
134
110
|
`${tokens[1]}/USD`,
|
|
135
|
-
],
|
|
111
|
+
], ignoreCache);
|
|
136
112
|
if (priceOfCoin0 && priceOfCoin1) {
|
|
137
113
|
const amount = amount0.mul(priceOfCoin0).add(amount1.mul(priceOfCoin1));
|
|
138
114
|
return amount.toString();
|
|
@@ -144,106 +120,146 @@ async function getDoubleAssetPortfolioAmountInUSD(poolName, options, ignoreCache
|
|
|
144
120
|
return "0";
|
|
145
121
|
}
|
|
146
122
|
}
|
|
147
|
-
|
|
148
|
-
const
|
|
149
|
-
|
|
123
|
+
async function getNaviLoopingPoolDebt(poolName) {
|
|
124
|
+
const debt = (await (0, index_js_1.getSuiClient)().getDynamicFieldObject({
|
|
125
|
+
parentId: index_js_1.poolInfo[poolName].investorId,
|
|
126
|
+
name: {
|
|
127
|
+
type: "vector<u8>",
|
|
128
|
+
value: "debt".split("").map((char) => char.charCodeAt(0)),
|
|
129
|
+
},
|
|
130
|
+
})).data.content.fields.value.toString();
|
|
131
|
+
return debt;
|
|
132
|
+
}
|
|
133
|
+
async function getSingleAssetPortfolioAmount(poolName, address, ignoreCache) {
|
|
150
134
|
let portfolioAmount = 0;
|
|
151
|
-
const
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
return cachedResponse;
|
|
135
|
+
const receipts = await (0, getReceipts_js_1.getReceipts)(poolName, address, ignoreCache);
|
|
136
|
+
let totalXTokens = new decimal_js_1.Decimal(0);
|
|
137
|
+
if (receipts) {
|
|
138
|
+
receipts.forEach((receipt) => {
|
|
139
|
+
const xTokens = receipt.content.fields.xTokenBalance;
|
|
140
|
+
totalXTokens = totalXTokens.add(xTokens);
|
|
141
|
+
});
|
|
159
142
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
if (
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
const
|
|
181
|
-
const
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
const tokens = userTokens.div(Math.pow(10, 9 - coins_js_1.coins[maps_js_1.poolCoinMap[poolName]].expo));
|
|
185
|
-
if (poolName == "NAVI-LOOP-SUI-VSUI") {
|
|
186
|
-
// const { SevenKGateway } = await import("../");
|
|
187
|
-
// const sevenKInstance = new SevenKGateway();
|
|
188
|
-
// const numberOfTokensInSui = (await sevenKInstance.getQuote({
|
|
189
|
-
// slippage: 1,
|
|
190
|
-
// senderAddress: options.address,
|
|
191
|
-
// pair: { coinA: coins["VSUI"], coinB: coins["SUI"] },
|
|
192
|
-
// inAmount: new BN(tokens.toNumber()),
|
|
193
|
-
// })) as QuoteResponse;
|
|
194
|
-
const voloExchRate = await (0, getReceipts_js_1.fetchVoloExchangeRate)();
|
|
195
|
-
portfolioAmount = Number(tokens.mul(parseFloat(voloExchRate.data.exchangeRate)));
|
|
196
|
-
}
|
|
197
|
-
// TODO: Whenever NAVI-LOOP-USDT-WUSDC is released, change this else implementation
|
|
198
|
-
else {
|
|
199
|
-
portfolioAmount = Number(tokens);
|
|
200
|
-
}
|
|
143
|
+
if (totalXTokens.gt(0)) {
|
|
144
|
+
let pool;
|
|
145
|
+
let investor;
|
|
146
|
+
if (index_js_1.poolInfo[poolName].parentProtocolName == "NAVI") {
|
|
147
|
+
pool = await (0, getReceipts_js_1.getPool)(poolName, ignoreCache);
|
|
148
|
+
investor = (await (0, getReceipts_js_1.getInvestor)(poolName, ignoreCache));
|
|
149
|
+
}
|
|
150
|
+
if (poolName == "NAVI-LOOP-USDC-USDT" ||
|
|
151
|
+
poolName == "NAVI-LOOP-USDT-USDC") {
|
|
152
|
+
const supplyCoin = index_js_1.loopingPoolCoinMap[poolName].supplyCoin;
|
|
153
|
+
const borrowCoin = index_js_1.loopingPoolCoinMap[poolName].borrowCoin;
|
|
154
|
+
if (pool && investor) {
|
|
155
|
+
let tokensInvested = new decimal_js_1.Decimal(0);
|
|
156
|
+
const currentDebt = await getNaviLoopingPoolDebt(poolName);
|
|
157
|
+
const currentSupply = investor.content.fields.tokensDeposited.toString();
|
|
158
|
+
if (index_js_1.cetusPoolMap[supplyCoin + "-" + borrowCoin] &&
|
|
159
|
+
currentDebt &&
|
|
160
|
+
currentSupply) {
|
|
161
|
+
const cetusPool = await (0, index_js_1.getParentPool)(supplyCoin + "-" + borrowCoin, ignoreCache);
|
|
162
|
+
if (cetusPool) {
|
|
163
|
+
const sqrtPrice = cetusPool?.content.fields.current_sqrt_price;
|
|
164
|
+
const price = cetus_sui_clmm_sdk_1.TickMath.sqrtPriceX64ToPrice(new bn_js_1.default(sqrtPrice), coins_js_1.coinsList[supplyCoin].expo, coins_js_1.coinsList[borrowCoin].expo);
|
|
165
|
+
const currentDebtInSupplyCoin = new decimal_js_1.Decimal(currentDebt).div(price);
|
|
166
|
+
tokensInvested = new decimal_js_1.Decimal(currentSupply).minus(currentDebtInSupplyCoin);
|
|
201
167
|
}
|
|
202
168
|
else {
|
|
203
|
-
console.error(`
|
|
169
|
+
console.error(`couldnt fetch cetus pool`);
|
|
204
170
|
}
|
|
205
171
|
}
|
|
206
|
-
else
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
172
|
+
else if (index_js_1.cetusPoolMap[borrowCoin + "-" + supplyCoin] &&
|
|
173
|
+
currentDebt !== undefined &&
|
|
174
|
+
currentSupply !== undefined) {
|
|
175
|
+
const cetusPool = await (0, index_js_1.getParentPool)(borrowCoin + "-" + supplyCoin, ignoreCache);
|
|
176
|
+
if (cetusPool) {
|
|
177
|
+
const sqrtPrice = cetusPool?.content.fields.current_sqrt_price;
|
|
178
|
+
const price = cetus_sui_clmm_sdk_1.TickMath.sqrtPriceX64ToPrice(new bn_js_1.default(sqrtPrice), coins_js_1.coinsList[borrowCoin].expo, coins_js_1.coinsList[supplyCoin].expo);
|
|
179
|
+
const currentDebtInSupplyCoin = new decimal_js_1.Decimal(currentDebt).mul(price);
|
|
180
|
+
tokensInvested = new decimal_js_1.Decimal(currentSupply).minus(currentDebtInSupplyCoin);
|
|
213
181
|
}
|
|
214
182
|
else {
|
|
215
|
-
console.error(`
|
|
183
|
+
console.error(`couldnt fetch cetus pool`);
|
|
216
184
|
}
|
|
217
185
|
}
|
|
186
|
+
else {
|
|
187
|
+
console.error(`one or more of these are possibly undefined: currentDebt:${currentDebt}, currentSupply: ${currentSupply}, cetusPoolMap[supplyCoin+'-'+borrowCoin]:${index_js_1.cetusPoolMap[supplyCoin + "-" + borrowCoin]}, cetusPoolMap[borrowCoin+'-'+supplyCoin]: ${index_js_1.cetusPoolMap[borrowCoin + "-" + supplyCoin]}`);
|
|
188
|
+
}
|
|
189
|
+
const xTokenSupplyInPool = new decimal_js_1.Decimal(pool.content.fields.xTokenSupply);
|
|
190
|
+
const userTokens = totalXTokens
|
|
191
|
+
.mul(tokensInvested)
|
|
192
|
+
.div(xTokenSupplyInPool);
|
|
193
|
+
const tokens = userTokens.div(Math.pow(10, 9 - coins_js_1.coinsList[maps_js_1.singleAssetPoolCoinMap[poolName].coin].expo));
|
|
194
|
+
portfolioAmount = Number(tokens);
|
|
218
195
|
}
|
|
219
196
|
else {
|
|
220
|
-
|
|
197
|
+
console.error(`Could not get object for poolName: ${poolName}`);
|
|
221
198
|
}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
199
|
+
}
|
|
200
|
+
else if (poolName == "NAVI-LOOP-HASUI-SUI" ||
|
|
201
|
+
poolName == "NAVI-LOOP-SUI-VSUI") {
|
|
202
|
+
if (pool && investor) {
|
|
203
|
+
const liquidity = new decimal_js_1.Decimal(investor.content.fields.tokensDeposited);
|
|
204
|
+
const debtToSupplyRatio = new decimal_js_1.Decimal(investor.content.fields.current_debt_to_supply_ratio);
|
|
205
|
+
const tokensInvested = liquidity.mul(new decimal_js_1.Decimal(1).minus(new decimal_js_1.Decimal(debtToSupplyRatio).div(1e20)));
|
|
206
|
+
const xTokenSupplyInPool = new decimal_js_1.Decimal(pool.content.fields.xTokenSupply);
|
|
207
|
+
const userTokens = totalXTokens
|
|
208
|
+
.mul(tokensInvested)
|
|
209
|
+
.div(xTokenSupplyInPool);
|
|
210
|
+
const tokens = userTokens.div(Math.pow(10, 9 - coins_js_1.coinsList[maps_js_1.singleAssetPoolCoinMap[poolName].coin].expo));
|
|
211
|
+
if (poolName == "NAVI-LOOP-SUI-VSUI") {
|
|
212
|
+
// const { SevenKGateway } = await import("../");
|
|
213
|
+
// const sevenKInstance = new SevenKGateway();
|
|
214
|
+
// const numberOfTokensInSui = (await sevenKInstance.getQuote({
|
|
215
|
+
// slippage: 1,
|
|
216
|
+
// senderAddress: options.address,
|
|
217
|
+
// pair: { coinA: coins["VSUI"], coinB: coins["SUI"] },
|
|
218
|
+
// inAmount: new BN(tokens.toNumber()),
|
|
219
|
+
// })) as QuoteResponse;
|
|
220
|
+
const voloExchRate = await (0, getReceipts_js_1.fetchVoloExchangeRate)();
|
|
221
|
+
portfolioAmount = Number(tokens.mul(parseFloat(voloExchRate.data.exchangeRate)));
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
portfolioAmount = Number(tokens);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
console.error(`Could not get object for poolName: ${poolName}`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
const poolExchangeRate = await (0, getReceipts_js_1.getPoolExchangeRate)(poolName, ignoreCache);
|
|
233
|
+
if (poolExchangeRate) {
|
|
234
|
+
let tokens = totalXTokens.mul(poolExchangeRate);
|
|
235
|
+
if (index_js_1.poolInfo[poolName].parentProtocolName == "NAVI") {
|
|
236
|
+
tokens = tokens.div(Math.pow(10, 9 - coins_js_1.coinsList[maps_js_1.singleAssetPoolCoinMap[poolName].coin].expo));
|
|
237
|
+
}
|
|
238
|
+
portfolioAmount = tokens.toNumber();
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
console.error(`Could not get poolExchangeRate for poolName: ${poolName}`);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
230
244
|
}
|
|
231
|
-
return
|
|
245
|
+
return portfolioAmount;
|
|
232
246
|
}
|
|
233
|
-
async function getSingleAssetPortfolioAmountInUSD(poolName,
|
|
234
|
-
const amounts = await getSingleAssetPortfolioAmount(poolName,
|
|
247
|
+
async function getSingleAssetPortfolioAmountInUSD(poolName, address, ignoreCache) {
|
|
248
|
+
const amounts = await getSingleAssetPortfolioAmount(poolName, address, ignoreCache);
|
|
235
249
|
if (amounts !== undefined) {
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
250
|
+
let coinName = maps_js_1.singleAssetPoolCoinMap[poolName].coin;
|
|
251
|
+
if (poolName == "NAVI-LOOP-SUI-VSUI") {
|
|
252
|
+
coinName = "SUI";
|
|
253
|
+
}
|
|
254
|
+
const amount = new decimal_js_1.Decimal(amounts).div(new decimal_js_1.Decimal(Math.pow(10, coins_js_1.coinsList[coinName].expo)));
|
|
255
|
+
const [priceOfCoin] = await (0, prices_js_2.getLatestPrices)([`${coinName}/USD`], ignoreCache);
|
|
240
256
|
if (priceOfCoin) {
|
|
241
257
|
const amountInUSD = amount.mul(priceOfCoin);
|
|
242
258
|
return amountInUSD.toString();
|
|
243
259
|
}
|
|
244
260
|
}
|
|
245
261
|
else {
|
|
246
|
-
console.error(`
|
|
262
|
+
console.error(`getSingleAssetPortfolioAmountInUSD is not implemented for poolName: ${poolName}`);
|
|
247
263
|
}
|
|
248
264
|
return "0";
|
|
249
265
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPortfolioAmounts.js","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/getPortfolioAmounts.ts"],"names":[],"mappings":"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","sourcesContent":["import { SuiClient } from \"@mysten/sui/client\";\nimport { Decimal } from \"decimal.js\";\nimport {\n CoinName,\n PoolName,\n DoubleAssetPoolNames,\n NaviInvestor,\n CommonInvestorFields,\n SingleAssetPoolNames,\n} from \"../../index.js\";\nimport {\n getCoinAmountsFromLiquidity,\n getPool,\n getPoolExchangeRate,\n getReceipts,\n getNaviInvestor,\n fetchVoloExchangeRate,\n} from \"./getReceipts.js\";\nimport { SimpleCache } from \"../../utils/simpleCache.js\";\nimport { coins } from \"../../common/coins.js\";\nimport { poolCoinMap, poolCoinPairMap } from \"../../common/maps.js\";\nimport { PythPriceIdPair } from \"../../common/pyth.js\";\nimport { getAlphaPrice } from \"../../utils/clmm/prices.js\";\nimport { getLatestPrices } from \"../../utils/prices.js\";\n\nexport async function getAlphaPortfolioAmount(\n poolName: PoolName,\n options: { suiClient: SuiClient; address: string; isLocked?: boolean },\n) {\n const receipts = await getReceipts(poolName, options.address);\n const pool = await getPool(poolName);\n if (!pool) {\n throw new Error(\"Pool not found\");\n }\n\n const exchangeRate = await getPoolExchangeRate(poolName);\n let totalXTokens = new Decimal(0);\n if (!exchangeRate) {\n return \"0\"; // if pool has 0 xtokens\n }\n if (options.isLocked === true) {\n receipts.forEach(async (receipt) => {\n const xTokens = new Decimal(receipt.content.fields.xTokenBalance);\n const bal = new Decimal(\n Number(receipt.content.fields.unlocked_xtokens) *\n exchangeRate.toNumber(),\n );\n totalXTokens = totalXTokens.add(xTokens.sub(bal));\n });\n } else if (options.isLocked === false) {\n receipts.forEach((receipt) => {\n const bal = new Decimal(\n Number(receipt.content.fields.unlocked_xtokens) *\n exchangeRate.toNumber(),\n );\n totalXTokens = totalXTokens.add(bal);\n });\n } else {\n receipts.forEach((receipt) => {\n const xTokens = receipt.content.fields.xTokenBalance;\n totalXTokens = totalXTokens.add(xTokens);\n });\n }\n if (totalXTokens.gt(0)) {\n const poolExchangeRate = await getPoolExchangeRate(poolName);\n if (poolExchangeRate) {\n const tokens = totalXTokens.div(1e9).mul(poolExchangeRate);\n return `${tokens}`;\n } else {\n console.error(`Could not get poolExchangeRate for poolName: ${poolName}`);\n }\n } else {\n return \"0\";\n }\n}\n\nexport async function getAlphaPortfolioAmountInUSD(\n poolName: PoolName,\n options: { suiClient: SuiClient; address: string; isLocked?: boolean },\n) {\n const tokens = await getAlphaPortfolioAmount(poolName, options);\n const priceOfAlpha = await getAlphaPrice();\n if (priceOfAlpha && tokens) {\n let amount = new Decimal(tokens);\n amount = amount.mul(priceOfAlpha);\n return amount.toString();\n }\n}\n\nconst portfolioAmountCache = new SimpleCache<[number, number]>();\nconst portfolioAmountPromiseCache = new SimpleCache<\n Promise<[number, number]>\n>();\nexport async function getPortfolioAmount(\n poolName: PoolName,\n options: { suiClient: SuiClient; address: string; isLocked?: boolean },\n ignoreCache: boolean = false,\n): Promise<[number, number] | undefined> {\n let portfolioAmount: [number, number] = [0, 0];\n const portfolioAmountCacheKey = `getPortfolioAmount:${poolName}-${options.address}}`;\n if (ignoreCache) {\n portfolioAmountCache.delete(portfolioAmountCacheKey);\n portfolioAmountPromiseCache.delete(portfolioAmountCacheKey);\n }\n const cachedResponse = portfolioAmountCache.get(portfolioAmountCacheKey);\n\n if (cachedResponse) {\n return cachedResponse;\n }\n\n let cachedPromise = portfolioAmountPromiseCache.get(portfolioAmountCacheKey);\n\n if (!cachedPromise) {\n cachedPromise = (async () => {\n const receipts = await getReceipts(poolName, options.address);\n let totalXTokens = new Decimal(0);\n if (receipts) {\n receipts.forEach((receipt) => {\n const xTokens = receipt.content.fields.xTokenBalance;\n totalXTokens = totalXTokens.add(xTokens);\n });\n }\n\n if (totalXTokens.gt(0)) {\n const poolExchangeRate = await getPoolExchangeRate(poolName);\n if (poolExchangeRate) {\n const tokens = totalXTokens.mul(poolExchangeRate);\n const poolTokenAmounts = await getCoinAmountsFromLiquidity(\n poolName,\n tokens.toNumber(),\n );\n portfolioAmount = poolTokenAmounts;\n } else {\n console.error(\n `Could not get poolExchangeRate for poolName: ${poolName}`,\n );\n }\n } else {\n portfolioAmount = [0, 0];\n }\n\n portfolioAmountCache.set(portfolioAmountCacheKey, portfolioAmount);\n portfolioAmountPromiseCache.delete(portfolioAmountCacheKey); // Remove the promise from cache\n return portfolioAmount;\n })().catch((error) => {\n portfolioAmountPromiseCache.delete(portfolioAmountCacheKey); // Remove the promise from cache\n throw error;\n });\n\n portfolioAmountPromiseCache.set(portfolioAmountCacheKey, cachedPromise);\n }\n\n return cachedPromise;\n}\n\nexport async function getDoubleAssetPortfolioAmountInUSD(\n poolName: PoolName,\n options: { suiClient: SuiClient; address: string; isLocked?: boolean },\n ignoreCache: boolean = false,\n): Promise<string | undefined> {\n if ((poolName as DoubleAssetPoolNames) !== undefined) {\n const amounts = await getPortfolioAmount(poolName, options, ignoreCache);\n if (amounts !== undefined) {\n const ten = new Decimal(10);\n const pool1 = poolCoinPairMap[poolName as DoubleAssetPoolNames]\n .coinA as CoinName;\n const pool2 = poolCoinPairMap[poolName as DoubleAssetPoolNames]\n .coinB as CoinName;\n const amount0 = new Decimal(amounts[0]).div(\n ten.pow(coins[pool1 as CoinName].expo),\n );\n const amount1 = new Decimal(amounts[1]).div(\n ten.pow(coins[pool2 as CoinName].expo),\n );\n const tokens = poolName.split(\"-\");\n const [priceOfCoin0, priceOfCoin1] = await getLatestPrices(\n [\n `${tokens[0]}/USD` as PythPriceIdPair,\n `${tokens[1]}/USD` as PythPriceIdPair,\n ],\n false,\n );\n if (priceOfCoin0 && priceOfCoin1) {\n const amount = amount0.mul(priceOfCoin0).add(amount1.mul(priceOfCoin1));\n return amount.toString();\n }\n } else {\n console.error(\n `getPortfolioAmountInUSD is not implemented for poolName: ${poolName}`,\n );\n }\n return \"0\";\n }\n}\n\nconst singleAssetPortfolioAmountCache = new SimpleCache<number>();\nconst singleAssetPortfolioAmountPromiseCache = new SimpleCache<\n Promise<number>\n>();\nexport async function getSingleAssetPortfolioAmount(\n poolName: SingleAssetPoolNames,\n options: { suiClient: SuiClient; address: string; isLocked?: boolean },\n ignoreCache: boolean = false,\n) {\n let portfolioAmount: number = 0;\n const portfolioAmountCacheKey = `getPortfolioAmount:${poolName}-${options.address}}`;\n if (ignoreCache) {\n singleAssetPortfolioAmountCache.delete(portfolioAmountCacheKey);\n singleAssetPortfolioAmountPromiseCache.delete(portfolioAmountCacheKey);\n }\n const cachedResponse = singleAssetPortfolioAmountCache.get(\n portfolioAmountCacheKey,\n );\n\n if (cachedResponse) {\n return cachedResponse;\n }\n\n let cachedPromise = singleAssetPortfolioAmountPromiseCache.get(\n portfolioAmountCacheKey,\n );\n\n if (!cachedPromise) {\n cachedPromise = (async () => {\n const receipts = await getReceipts(\n poolName,\n options.address,\n ignoreCache,\n );\n let totalXTokens = new Decimal(0);\n if (receipts) {\n receipts.forEach((receipt) => {\n const xTokens = receipt.content.fields.xTokenBalance;\n totalXTokens = totalXTokens.add(xTokens);\n });\n }\n if (totalXTokens.gt(0)) {\n if (\n poolName == \"NAVI-LOOP-SUI-VSUI\" ||\n poolName == \"NAVI-LOOP-USDC-USDT\"\n ) {\n const pool = await getPool(poolName, ignoreCache);\n const investor = (await getNaviInvestor(\n poolName,\n ignoreCache,\n )) as NaviInvestor & CommonInvestorFields;\n if (pool && investor) {\n const liquidity = new Decimal(\n investor.content.fields.tokensDeposited,\n );\n const debtToSupplyRatio = new Decimal(\n investor.content.fields.current_debt_to_supply_ratio,\n );\n const tokensInvested = liquidity.mul(\n new Decimal(1).minus(new Decimal(debtToSupplyRatio).div(1e20)),\n );\n const xTokenSupplyInPool = new Decimal(\n pool.content.fields.xTokenSupply,\n );\n const userTokens = totalXTokens\n .mul(tokensInvested)\n .div(xTokenSupplyInPool);\n const tokens = userTokens.div(\n Math.pow(10, 9 - coins[poolCoinMap[poolName]].expo),\n );\n if (poolName == \"NAVI-LOOP-SUI-VSUI\") {\n // const { SevenKGateway } = await import(\"../\");\n // const sevenKInstance = new SevenKGateway();\n // const numberOfTokensInSui = (await sevenKInstance.getQuote({\n // slippage: 1,\n // senderAddress: options.address,\n // pair: { coinA: coins[\"VSUI\"], coinB: coins[\"SUI\"] },\n // inAmount: new BN(tokens.toNumber()),\n // })) as QuoteResponse;\n const voloExchRate = await fetchVoloExchangeRate();\n portfolioAmount = Number(\n tokens.mul(parseFloat(voloExchRate.data.exchangeRate)),\n );\n }\n // TODO: Whenever NAVI-LOOP-USDT-WUSDC is released, change this else implementation\n else {\n portfolioAmount = Number(tokens);\n }\n } else {\n console.error(`Could not get object for poolName: ${poolName}`);\n }\n } else {\n const poolExchangeRate = await getPoolExchangeRate(\n poolName,\n ignoreCache,\n );\n if (poolExchangeRate) {\n let tokens = totalXTokens.mul(poolExchangeRate);\n tokens = tokens.div(\n Math.pow(\n 10,\n 9 -\n coins[poolCoinMap[poolName as keyof typeof poolCoinMap]].expo,\n ),\n );\n portfolioAmount = tokens.toNumber();\n } else {\n console.error(\n `Could not get poolExchangeRate for poolName: ${poolName}`,\n );\n }\n }\n } else {\n portfolioAmount = 0;\n }\n\n singleAssetPortfolioAmountCache.set(\n portfolioAmountCacheKey,\n portfolioAmount,\n );\n singleAssetPortfolioAmountPromiseCache.delete(portfolioAmountCacheKey); // Remove the promise from cache\n return portfolioAmount;\n })().catch((error) => {\n singleAssetPortfolioAmountPromiseCache.delete(portfolioAmountCacheKey); // Remove the promise from cache\n throw error;\n });\n\n singleAssetPortfolioAmountPromiseCache.set(\n portfolioAmountCacheKey,\n cachedPromise,\n );\n }\n\n return cachedPromise;\n}\n\nexport async function getSingleAssetPortfolioAmountInUSD(\n poolName: SingleAssetPoolNames,\n options: { suiClient: SuiClient; address: string; isLocked?: boolean },\n ignoreCache: boolean = false,\n): Promise<string | undefined> {\n const amounts = await getSingleAssetPortfolioAmount(\n poolName,\n options,\n ignoreCache,\n );\n if (amounts !== undefined) {\n const amount = new Decimal(amounts).div(\n new Decimal(\n Math.pow(\n 10,\n coins[poolCoinMap[poolName as keyof typeof poolCoinMap]].expo,\n ),\n ),\n );\n const [priceOfCoin] = await getLatestPrices(\n [\n `${poolCoinMap[poolName as keyof typeof poolCoinMap]}/USD` as PythPriceIdPair,\n ],\n false,\n );\n if (priceOfCoin) {\n const amountInUSD = amount.mul(priceOfCoin);\n return amountInUSD.toString();\n }\n } else {\n console.error(\n `getPortfolioAmountInUSD is not implemented for poolName: ${poolName}`,\n );\n }\n return \"0\";\n}\n"]}
|
|
1
|
+
{"version":3,"file":"getPortfolioAmounts.js","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/getPortfolioAmounts.ts"],"names":[],"mappings":";;AAiCA,0DAkDC;AAED,oEAYC;AAED,gDA8BC;AAED,gFAqCC;AAED,wDAeC;AAED,sEAsKC;AAED,gFAiCC;;AAnYD,2CAAqC;AACrC,6CAWwB;AACxB,qDAO0B;AAC1B,oDAAkD;AAClD,kDAG8B;AAE9B,0DAA2D;AAC3D,qDAAwD;AACxD,0EAA6D;AAC7D,0DAAuB;AAEhB,KAAK,UAAU,uBAAuB,CAC3C,QAAkB,EAClB,OAAsE,EACtE,WAAoB;IAEpB,MAAM,QAAQ,GAAG,MAAM,IAAA,4BAAW,EAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC3E,MAAM,IAAI,GAAG,MAAM,IAAA,wBAAO,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAClD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,IAAA,oCAAmB,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACtE,IAAI,YAAY,GAAG,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,GAAG,CAAC,CAAC,wBAAwB;IACtC,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC9B,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACjC,MAAM,OAAO,GAAG,IAAI,oBAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAClE,MAAM,GAAG,GAAG,IAAI,oBAAO,CACrB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC;gBAC7C,YAAY,CAAC,QAAQ,EAAE,CAC1B,CAAC;YACF,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QACtC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,MAAM,GAAG,GAAG,IAAI,oBAAO,CACrB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC;gBAC7C,YAAY,CAAC,QAAQ,EAAE,CAC1B,CAAC;YACF,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;YACrD,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,MAAM,gBAAgB,GAAG,MAAM,IAAA,oCAAmB,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC1E,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC3D,OAAO,GAAG,MAAM,EAAE,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,gDAAgD,QAAQ,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,4BAA4B,CAChD,QAAkB,EAClB,OAAsE,EACtE,WAAoB;IAEpB,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAC7E,MAAM,YAAY,GAAG,MAAM,IAAA,yBAAa,GAAE,CAAC;IAC3C,IAAI,YAAY,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,MAAM,GAAG,IAAI,oBAAO,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,kBAAkB,CACtC,QAAkB,EAClB,OAAe,EACf,WAAoB;IAEpB,IAAI,eAAe,GAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,MAAM,IAAA,4BAAW,EAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACnE,IAAI,YAAY,GAAG,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;YACrD,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,MAAM,gBAAgB,GAAG,MAAM,IAAA,oCAAmB,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC1E,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAClD,MAAM,gBAAgB,GAAG,MAAM,IAAA,4CAA2B,EACxD,QAAQ,EACR,MAAM,CAAC,QAAQ,EAAE,EACjB,WAAW,CACZ,CAAC;YACF,eAAe,GAAG,gBAAgB,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,gDAAgD,QAAQ,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAEM,KAAK,UAAU,kCAAkC,CACtD,QAAkB,EAClB,OAAe,EACf,WAAoB;IAEpB,IAAK,QAAiC,KAAK,SAAS,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QACzE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,IAAI,oBAAO,CAAC,EAAE,CAAC,CAAC;YAC5B,MAAM,KAAK,GAAG,gCAAsB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;YACrD,MAAM,KAAK,GAAG,gCAAsB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;YAErD,MAAM,OAAO,GAAG,IAAI,oBAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CACzC,GAAG,CAAC,GAAG,CAAC,oBAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAC/B,CAAC;YACF,MAAM,OAAO,GAAG,IAAI,oBAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CACzC,GAAG,CAAC,GAAG,CAAC,oBAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAC/B,CAAC;YACF,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,GAAG,MAAM,IAAA,2BAAe,EACxD;gBACE,GAAG,MAAM,CAAC,CAAC,CAAC,MAAyB;gBACrC,GAAG,MAAM,CAAC,CAAC,CAAC,MAAyB;aACtC,EACD,WAAW,CACZ,CAAC;YACF,IAAI,YAAY,IAAI,YAAY,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;gBACxE,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CACX,4DAA4D,QAAQ,EAAE,CACvE,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,sBAAsB,CAC1C,QAAkB;IAElB,MAAM,IAAI,GACR,CACE,MAAM,IAAA,uBAAY,GAAE,CAAC,qBAAqB,CAAC;QACzC,QAAQ,EAAE,mBAAQ,CAAC,QAAQ,CAAC,CAAC,UAAU;QACvC,IAAI,EAAE;YACJ,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SAC1D;KACF,CAAC,CACH,CAAC,IACH,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAClC,OAAO,IAAI,CAAC;AACd,CAAC;AAEM,KAAK,UAAU,6BAA6B,CACjD,QAAkB,EAClB,OAAe,EACf,WAAoB;IAEpB,IAAI,eAAe,GAAW,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,MAAM,IAAA,4BAAW,EAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACnE,IAAI,YAAY,GAAG,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;YACrD,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC;QACT,IAAI,QAAQ,CAAC;QACb,IAAI,mBAAQ,CAAC,QAAQ,CAAC,CAAC,kBAAkB,IAAI,MAAM,EAAE,CAAC;YACpD,IAAI,GAAG,MAAM,IAAA,wBAAO,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC5C,QAAQ,GAAG,CAAC,MAAM,IAAA,4BAAW,EAAC,QAAQ,EAAE,WAAW,CAAC,CAC9B,CAAC;QACzB,CAAC;QACD,IACE,QAAQ,IAAI,qBAAqB;YACjC,QAAQ,IAAI,qBAAqB,EACjC,CAAC;YACD,MAAM,UAAU,GAAG,6BAAkB,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC;YAC3D,MAAM,UAAU,GAAG,6BAAkB,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC;YAC3D,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;gBACrB,IAAI,cAAc,GAAG,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC;gBACpC,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAC;gBAE3D,MAAM,aAAa,GACjB,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;gBACrD,IACE,uBAAY,CAAC,UAAU,GAAG,GAAG,GAAG,UAAU,CAAC;oBAC3C,WAAW;oBACX,aAAa,EACb,CAAC;oBACD,MAAM,SAAS,GAAG,MAAM,IAAA,wBAAa,EACnC,UAAU,GAAG,GAAG,GAAG,UAAU,EAC7B,WAAW,CACZ,CAAC;oBACF,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,SAAS,GAAG,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;wBAC/D,MAAM,KAAK,GAAG,6BAAQ,CAAC,mBAAmB,CACxC,IAAI,eAAE,CAAC,SAAU,CAAC,EAClB,oBAAS,CAAC,UAAU,CAAC,CAAC,IAAI,EAC1B,oBAAS,CAAC,UAAU,CAAC,CAAC,IAAI,CAC3B,CAAC;wBACF,MAAM,uBAAuB,GAAG,IAAI,oBAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBACpE,cAAc,GAAG,IAAI,oBAAO,CAAC,aAAa,CAAC,CAAC,KAAK,CAC/C,uBAAuB,CACxB,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;oBAC5C,CAAC;gBACH,CAAC;qBAAM,IACL,uBAAY,CAAC,UAAU,GAAG,GAAG,GAAG,UAAU,CAAC;oBAC3C,WAAW,KAAK,SAAS;oBACzB,aAAa,KAAK,SAAS,EAC3B,CAAC;oBACD,MAAM,SAAS,GAAG,MAAM,IAAA,wBAAa,EACnC,UAAU,GAAG,GAAG,GAAG,UAAU,EAC7B,WAAW,CACZ,CAAC;oBACF,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,SAAS,GAAG,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;wBAC/D,MAAM,KAAK,GAAG,6BAAQ,CAAC,mBAAmB,CACxC,IAAI,eAAE,CAAC,SAAU,CAAC,EAClB,oBAAS,CAAC,UAAU,CAAC,CAAC,IAAI,EAC1B,oBAAS,CAAC,UAAU,CAAC,CAAC,IAAI,CAC3B,CAAC;wBACF,MAAM,uBAAuB,GAAG,IAAI,oBAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBACpE,cAAc,GAAG,IAAI,oBAAO,CAAC,aAAa,CAAC,CAAC,KAAK,CAC/C,uBAAuB,CACxB,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;oBAC5C,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CACX,4DAA4D,WAAW,oBAAoB,aAAa,6CAA6C,uBAAY,CAAC,UAAU,GAAG,GAAG,GAAG,UAAU,CAAC,8CAA8C,uBAAY,CAAC,UAAU,GAAG,GAAG,GAAG,UAAU,CAAC,EAAE,CAC5R,CAAC;gBACJ,CAAC;gBAED,MAAM,kBAAkB,GAAG,IAAI,oBAAO,CACpC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CACjC,CAAC;gBACF,MAAM,UAAU,GAAG,YAAY;qBAC5B,GAAG,CAAC,cAAc,CAAC;qBACnB,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBAC3B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAC3B,IAAI,CAAC,GAAG,CACN,EAAE,EACF,CAAC,GAAG,oBAAS,CAAC,gCAAsB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAC1D,CACF,CAAC;gBACF,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,sCAAsC,QAAQ,EAAE,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;aAAM,IACL,QAAQ,IAAI,qBAAqB;YACjC,QAAQ,IAAI,oBAAoB,EAChC,CAAC;YACD,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;gBACrB,MAAM,SAAS,GAAG,IAAI,oBAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;gBACvE,MAAM,iBAAiB,GAAG,IAAI,oBAAO,CACnC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,4BAA4B,CACrD,CAAC;gBACF,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAClC,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,oBAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAC/D,CAAC;gBACF,MAAM,kBAAkB,GAAG,IAAI,oBAAO,CACpC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CACjC,CAAC;gBACF,MAAM,UAAU,GAAG,YAAY;qBAC5B,GAAG,CAAC,cAAc,CAAC;qBACnB,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBAC3B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAC3B,IAAI,CAAC,GAAG,CACN,EAAE,EACF,CAAC,GAAG,oBAAS,CAAC,gCAAsB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAC1D,CACF,CAAC;gBACF,IAAI,QAAQ,IAAI,oBAAoB,EAAE,CAAC;oBACrC,iDAAiD;oBACjD,8CAA8C;oBAC9C,+DAA+D;oBAC/D,iBAAiB;oBACjB,oCAAoC;oBACpC,yDAAyD;oBACzD,yCAAyC;oBACzC,wBAAwB;oBACxB,MAAM,YAAY,GAAG,MAAM,IAAA,sCAAqB,GAAE,CAAC;oBACnD,eAAe,GAAG,MAAM,CACtB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CACvD,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,sCAAsC,QAAQ,EAAE,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,gBAAgB,GAAG,MAAM,IAAA,oCAAmB,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC1E,IAAI,gBAAgB,EAAE,CAAC;gBACrB,IAAI,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBAChD,IAAI,mBAAQ,CAAC,QAAQ,CAAC,CAAC,kBAAkB,IAAI,MAAM,EAAE,CAAC;oBACpD,MAAM,GAAG,MAAM,CAAC,GAAG,CACjB,IAAI,CAAC,GAAG,CACN,EAAE,EACF,CAAC,GAAG,oBAAS,CAAC,gCAAsB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAC1D,CACF,CAAC;gBACJ,CAAC;gBACD,eAAe,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CACX,gDAAgD,QAAQ,EAAE,CAC3D,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAEM,KAAK,UAAU,kCAAkC,CACtD,QAAkB,EAClB,OAAe,EACf,WAAoB;IAEpB,MAAM,OAAO,GAAG,MAAM,6BAA6B,CACjD,QAAQ,EACR,OAAO,EACP,WAAW,CACZ,CAAC;IAEF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,QAAQ,GAAG,gCAAsB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;QACrD,IAAI,QAAQ,IAAI,oBAAoB,EAAE,CAAC;YACrC,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,oBAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CACrC,IAAI,oBAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,oBAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CACpD,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,IAAA,2BAAe,EACzC,CAAC,GAAG,QAAQ,MAAyB,CAAC,EACtC,WAAW,CACZ,CAAC;QACF,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC5C,OAAO,WAAW,CAAC,QAAQ,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CACX,uEAAuE,QAAQ,EAAE,CAClF,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC","sourcesContent":["import { SuiClient } from \"@mysten/sui/client\";\nimport { Decimal } from \"decimal.js\";\nimport {\n PoolName,\n DoubleAssetPoolNames,\n NaviInvestor,\n CommonInvestorFields,\n poolInfo,\n loopingPoolCoinMap,\n getSuiClient,\n LoopingDebt,\n cetusPoolMap,\n getParentPool,\n} from \"../../index.js\";\nimport {\n getCoinAmountsFromLiquidity,\n getPool,\n getPoolExchangeRate,\n getReceipts,\n fetchVoloExchangeRate,\n getInvestor,\n} from \"./getReceipts.js\";\nimport { coinsList } from \"../../common/coins.js\";\nimport {\n singleAssetPoolCoinMap,\n doubleAssetPoolCoinMap,\n} from \"../../common/maps.js\";\nimport { PythPriceIdPair } from \"../../common/pyth.js\";\nimport { getAlphaPrice } from \"../../utils/clmm/prices.js\";\nimport { getLatestPrices } from \"../../utils/prices.js\";\nimport { TickMath } from \"@cetusprotocol/cetus-sui-clmm-sdk\";\nimport BN from \"bn.js\";\n\nexport async function getAlphaPortfolioAmount(\n poolName: PoolName,\n options: { suiClient: SuiClient; address: string; isLocked?: boolean },\n ignoreCache: boolean,\n) {\n const receipts = await getReceipts(poolName, options.address, ignoreCache);\n const pool = await getPool(poolName, ignoreCache);\n if (!pool) {\n throw new Error(\"Pool not found\");\n }\n\n const exchangeRate = await getPoolExchangeRate(poolName, ignoreCache);\n let totalXTokens = new Decimal(0);\n if (!exchangeRate) {\n return \"0\"; // if pool has 0 xtokens\n }\n if (options.isLocked === true) {\n receipts.forEach(async (receipt) => {\n const xTokens = new Decimal(receipt.content.fields.xTokenBalance);\n const bal = new Decimal(\n Number(receipt.content.fields.unlocked_xtokens) *\n exchangeRate.toNumber(),\n );\n totalXTokens = totalXTokens.add(xTokens.sub(bal));\n });\n } else if (options.isLocked === false) {\n receipts.forEach((receipt) => {\n const bal = new Decimal(\n Number(receipt.content.fields.unlocked_xtokens) *\n exchangeRate.toNumber(),\n );\n totalXTokens = totalXTokens.add(bal);\n });\n } else {\n receipts.forEach((receipt) => {\n const xTokens = receipt.content.fields.xTokenBalance;\n totalXTokens = totalXTokens.add(xTokens);\n });\n }\n if (totalXTokens.gt(0)) {\n const poolExchangeRate = await getPoolExchangeRate(poolName, ignoreCache);\n if (poolExchangeRate) {\n const tokens = totalXTokens.div(1e9).mul(poolExchangeRate);\n return `${tokens}`;\n } else {\n console.error(`Could not get poolExchangeRate for poolName: ${poolName}`);\n }\n } else {\n return \"0\";\n }\n}\n\nexport async function getAlphaPortfolioAmountInUSD(\n poolName: PoolName,\n options: { suiClient: SuiClient; address: string; isLocked?: boolean },\n ignoreCache: boolean,\n) {\n const tokens = await getAlphaPortfolioAmount(poolName, options, ignoreCache);\n const priceOfAlpha = await getAlphaPrice();\n if (priceOfAlpha && tokens) {\n let amount = new Decimal(tokens);\n amount = amount.mul(priceOfAlpha);\n return amount.toString();\n }\n}\n\nexport async function getPortfolioAmount(\n poolName: PoolName,\n address: string,\n ignoreCache: boolean,\n): Promise<[string, string] | undefined> {\n let portfolioAmount: [string, string] = [\"0\", \"0\"];\n const receipts = await getReceipts(poolName, address, ignoreCache);\n let totalXTokens = new Decimal(0);\n if (receipts) {\n receipts.forEach((receipt) => {\n const xTokens = receipt.content.fields.xTokenBalance;\n totalXTokens = totalXTokens.add(xTokens);\n });\n }\n\n if (totalXTokens.gt(0)) {\n const poolExchangeRate = await getPoolExchangeRate(poolName, ignoreCache);\n if (poolExchangeRate) {\n const tokens = totalXTokens.mul(poolExchangeRate);\n const poolTokenAmounts = await getCoinAmountsFromLiquidity(\n poolName,\n tokens.toString(),\n ignoreCache,\n );\n portfolioAmount = poolTokenAmounts;\n } else {\n console.error(`Could not get poolExchangeRate for poolName: ${poolName}`);\n }\n }\n return portfolioAmount;\n}\n\nexport async function getDoubleAssetPortfolioAmountInUSD(\n poolName: PoolName,\n address: string,\n ignoreCache: boolean,\n): Promise<string | undefined> {\n if ((poolName as DoubleAssetPoolNames) !== undefined) {\n const amounts = await getPortfolioAmount(poolName, address, ignoreCache);\n if (amounts !== undefined) {\n const ten = new Decimal(10);\n const pool1 = doubleAssetPoolCoinMap[poolName].coin1;\n const pool2 = doubleAssetPoolCoinMap[poolName].coin2;\n\n const amount0 = new Decimal(amounts[0]).div(\n ten.pow(coinsList[pool1].expo),\n );\n const amount1 = new Decimal(amounts[1]).div(\n ten.pow(coinsList[pool2].expo),\n );\n const tokens = poolName.split(\"-\");\n const [priceOfCoin0, priceOfCoin1] = await getLatestPrices(\n [\n `${tokens[0]}/USD` as PythPriceIdPair,\n `${tokens[1]}/USD` as PythPriceIdPair,\n ],\n ignoreCache,\n );\n if (priceOfCoin0 && priceOfCoin1) {\n const amount = amount0.mul(priceOfCoin0).add(amount1.mul(priceOfCoin1));\n return amount.toString();\n }\n } else {\n console.error(\n `getPortfolioAmountInUSD is not implemented for poolName: ${poolName}`,\n );\n }\n return \"0\";\n }\n}\n\nexport async function getNaviLoopingPoolDebt(\n poolName: PoolName,\n): Promise<string | undefined> {\n const debt = (\n (\n await getSuiClient().getDynamicFieldObject({\n parentId: poolInfo[poolName].investorId,\n name: {\n type: \"vector<u8>\",\n value: \"debt\".split(\"\").map((char) => char.charCodeAt(0)),\n },\n })\n ).data as LoopingDebt\n ).content.fields.value.toString();\n return debt;\n}\n\nexport async function getSingleAssetPortfolioAmount(\n poolName: PoolName,\n address: string,\n ignoreCache: boolean,\n) {\n let portfolioAmount: number = 0;\n const receipts = await getReceipts(poolName, address, ignoreCache);\n let totalXTokens = new Decimal(0);\n if (receipts) {\n receipts.forEach((receipt) => {\n const xTokens = receipt.content.fields.xTokenBalance;\n totalXTokens = totalXTokens.add(xTokens);\n });\n }\n if (totalXTokens.gt(0)) {\n let pool;\n let investor;\n if (poolInfo[poolName].parentProtocolName == \"NAVI\") {\n pool = await getPool(poolName, ignoreCache);\n investor = (await getInvestor(poolName, ignoreCache)) as NaviInvestor &\n CommonInvestorFields;\n }\n if (\n poolName == \"NAVI-LOOP-USDC-USDT\" ||\n poolName == \"NAVI-LOOP-USDT-USDC\"\n ) {\n const supplyCoin = loopingPoolCoinMap[poolName].supplyCoin;\n const borrowCoin = loopingPoolCoinMap[poolName].borrowCoin;\n if (pool && investor) {\n let tokensInvested = new Decimal(0);\n const currentDebt = await getNaviLoopingPoolDebt(poolName);\n\n const currentSupply =\n investor.content.fields.tokensDeposited.toString();\n if (\n cetusPoolMap[supplyCoin + \"-\" + borrowCoin] &&\n currentDebt &&\n currentSupply\n ) {\n const cetusPool = await getParentPool(\n supplyCoin + \"-\" + borrowCoin,\n ignoreCache,\n );\n if (cetusPool) {\n const sqrtPrice = cetusPool?.content.fields.current_sqrt_price;\n const price = TickMath.sqrtPriceX64ToPrice(\n new BN(sqrtPrice!),\n coinsList[supplyCoin].expo,\n coinsList[borrowCoin].expo,\n );\n const currentDebtInSupplyCoin = new Decimal(currentDebt).div(price);\n tokensInvested = new Decimal(currentSupply).minus(\n currentDebtInSupplyCoin,\n );\n } else {\n console.error(`couldnt fetch cetus pool`);\n }\n } else if (\n cetusPoolMap[borrowCoin + \"-\" + supplyCoin] &&\n currentDebt !== undefined &&\n currentSupply !== undefined\n ) {\n const cetusPool = await getParentPool(\n borrowCoin + \"-\" + supplyCoin,\n ignoreCache,\n );\n if (cetusPool) {\n const sqrtPrice = cetusPool?.content.fields.current_sqrt_price;\n const price = TickMath.sqrtPriceX64ToPrice(\n new BN(sqrtPrice!),\n coinsList[borrowCoin].expo,\n coinsList[supplyCoin].expo,\n );\n const currentDebtInSupplyCoin = new Decimal(currentDebt).mul(price);\n tokensInvested = new Decimal(currentSupply).minus(\n currentDebtInSupplyCoin,\n );\n } else {\n console.error(`couldnt fetch cetus pool`);\n }\n } else {\n console.error(\n `one or more of these are possibly undefined: currentDebt:${currentDebt}, currentSupply: ${currentSupply}, cetusPoolMap[supplyCoin+'-'+borrowCoin]:${cetusPoolMap[supplyCoin + \"-\" + borrowCoin]}, cetusPoolMap[borrowCoin+'-'+supplyCoin]: ${cetusPoolMap[borrowCoin + \"-\" + supplyCoin]}`,\n );\n }\n\n const xTokenSupplyInPool = new Decimal(\n pool.content.fields.xTokenSupply,\n );\n const userTokens = totalXTokens\n .mul(tokensInvested)\n .div(xTokenSupplyInPool);\n const tokens = userTokens.div(\n Math.pow(\n 10,\n 9 - coinsList[singleAssetPoolCoinMap[poolName].coin].expo,\n ),\n );\n portfolioAmount = Number(tokens);\n } else {\n console.error(`Could not get object for poolName: ${poolName}`);\n }\n } else if (\n poolName == \"NAVI-LOOP-HASUI-SUI\" ||\n poolName == \"NAVI-LOOP-SUI-VSUI\"\n ) {\n if (pool && investor) {\n const liquidity = new Decimal(investor.content.fields.tokensDeposited);\n const debtToSupplyRatio = new Decimal(\n investor.content.fields.current_debt_to_supply_ratio,\n );\n const tokensInvested = liquidity.mul(\n new Decimal(1).minus(new Decimal(debtToSupplyRatio).div(1e20)),\n );\n const xTokenSupplyInPool = new Decimal(\n pool.content.fields.xTokenSupply,\n );\n const userTokens = totalXTokens\n .mul(tokensInvested)\n .div(xTokenSupplyInPool);\n const tokens = userTokens.div(\n Math.pow(\n 10,\n 9 - coinsList[singleAssetPoolCoinMap[poolName].coin].expo,\n ),\n );\n if (poolName == \"NAVI-LOOP-SUI-VSUI\") {\n // const { SevenKGateway } = await import(\"../\");\n // const sevenKInstance = new SevenKGateway();\n // const numberOfTokensInSui = (await sevenKInstance.getQuote({\n // slippage: 1,\n // senderAddress: options.address,\n // pair: { coinA: coins[\"VSUI\"], coinB: coins[\"SUI\"] },\n // inAmount: new BN(tokens.toNumber()),\n // })) as QuoteResponse;\n const voloExchRate = await fetchVoloExchangeRate();\n portfolioAmount = Number(\n tokens.mul(parseFloat(voloExchRate.data.exchangeRate)),\n );\n } else {\n portfolioAmount = Number(tokens);\n }\n } else {\n console.error(`Could not get object for poolName: ${poolName}`);\n }\n } else {\n const poolExchangeRate = await getPoolExchangeRate(poolName, ignoreCache);\n if (poolExchangeRate) {\n let tokens = totalXTokens.mul(poolExchangeRate);\n if (poolInfo[poolName].parentProtocolName == \"NAVI\") {\n tokens = tokens.div(\n Math.pow(\n 10,\n 9 - coinsList[singleAssetPoolCoinMap[poolName].coin].expo,\n ),\n );\n }\n portfolioAmount = tokens.toNumber();\n } else {\n console.error(\n `Could not get poolExchangeRate for poolName: ${poolName}`,\n );\n }\n }\n }\n return portfolioAmount;\n}\n\nexport async function getSingleAssetPortfolioAmountInUSD(\n poolName: PoolName,\n address: string,\n ignoreCache: boolean,\n): Promise<string | undefined> {\n const amounts = await getSingleAssetPortfolioAmount(\n poolName,\n address,\n ignoreCache,\n );\n\n if (amounts !== undefined) {\n let coinName = singleAssetPoolCoinMap[poolName].coin;\n if (poolName == \"NAVI-LOOP-SUI-VSUI\") {\n coinName = \"SUI\";\n }\n const amount = new Decimal(amounts).div(\n new Decimal(Math.pow(10, coinsList[coinName].expo)),\n );\n const [priceOfCoin] = await getLatestPrices(\n [`${coinName}/USD` as PythPriceIdPair],\n ignoreCache,\n );\n if (priceOfCoin) {\n const amountInUSD = amount.mul(priceOfCoin);\n return amountInUSD.toString();\n }\n } else {\n console.error(\n `getSingleAssetPortfolioAmountInUSD is not implemented for poolName: ${poolName}`,\n );\n }\n return \"0\";\n}\n"]}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
import { AlphaPoolType,
|
|
1
|
+
import { AlphaPoolType, NaviInvestor, CommonInvestorFields, CetusPoolType, PoolName, PoolType, Receipt, NaviVoloData, Investor, SingleAssetPoolNames, ReceiptGQL } from "../../index.js";
|
|
2
2
|
import { Decimal } from "decimal.js";
|
|
3
|
-
export declare function
|
|
4
|
-
export declare function
|
|
5
|
-
export declare function
|
|
6
|
-
export declare function
|
|
7
|
-
export declare function
|
|
8
|
-
export declare function
|
|
9
|
-
export declare function
|
|
10
|
-
export declare function
|
|
11
|
-
export declare function
|
|
3
|
+
export declare function convertReceiptGQLToReceipt(receipts: ReceiptGQL[]): Receipt[];
|
|
4
|
+
export declare function getMultiReceipts(address: string): Promise<void>;
|
|
5
|
+
export declare function getReceipts(poolName: string, address: string, ignoreCache: boolean): Promise<Receipt[]>;
|
|
6
|
+
export declare function getPoolExchangeRate(poolName: PoolName, ignoreCache: boolean): Promise<Decimal | undefined>;
|
|
7
|
+
export declare function getMultiPool(): Promise<void>;
|
|
8
|
+
export declare function getPool(poolName: string, ignoreCache: boolean): Promise<PoolType | AlphaPoolType | undefined>;
|
|
9
|
+
export declare function getMultiParentPool(): Promise<void>;
|
|
10
|
+
export declare function getParentPool(poolName: string, ignoreCache: boolean): Promise<CetusPoolType | undefined>;
|
|
11
|
+
export declare function getMultiInvestor(): Promise<void>;
|
|
12
|
+
export declare function getInvestor(poolName: PoolName, ignoreCache: boolean): Promise<Investor | undefined>;
|
|
13
|
+
export declare function fetchVoloExchangeRate(): Promise<NaviVoloData>;
|
|
14
|
+
export declare function getCoinAmountsFromLiquidity(poolName: PoolName, liquidity: string, ignoreCache: boolean): Promise<[string, string]>;
|
|
15
|
+
export declare function multiGetNaviInvestor(poolNames: SingleAssetPoolNames[]): Promise<{
|
|
12
16
|
ALPHA?: (NaviInvestor & CommonInvestorFields) | undefined;
|
|
13
17
|
"NAVI-SUI"?: (NaviInvestor & CommonInvestorFields) | undefined;
|
|
14
18
|
"NAVI-VSUI"?: (NaviInvestor & CommonInvestorFields) | undefined;
|
|
@@ -25,5 +29,6 @@ export declare function multiGetNaviInvestor(poolNames: SingleAssetPoolNames[],
|
|
|
25
29
|
"NAVI-ETH"?: (NaviInvestor & CommonInvestorFields) | undefined;
|
|
26
30
|
"NAVI-LOOP-HASUI-SUI"?: (NaviInvestor & CommonInvestorFields) | undefined;
|
|
27
31
|
"NAVI-LOOP-USDT-USDC"?: (NaviInvestor & CommonInvestorFields) | undefined;
|
|
32
|
+
"NAVI-NS"?: (NaviInvestor & CommonInvestorFields) | undefined;
|
|
28
33
|
}>;
|
|
29
34
|
//# sourceMappingURL=getReceipts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getReceipts.d.ts","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/getReceipts.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,
|
|
1
|
+
{"version":3,"file":"getReceipts.d.ts","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/getReceipts.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EAEb,YAAY,EACZ,oBAAoB,EACpB,aAAa,EAEb,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,QAAQ,EAGR,oBAAoB,EAEpB,UAAU,EAGX,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAIrC,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,EAAE,CAyE5E;AAKD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,iBA0BrD;AAED,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,OAAO,EAAE,CAAC,CAgEpB;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAoC9B;AAOD,wBAAsB,YAAY,kBAuBjC;AAED,wBAAsB,OAAO,CAC3B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,QAAQ,GAAG,aAAa,GAAG,SAAS,CAAC,CAgD/C;AAOD,wBAAsB,kBAAkB,kBAuBvC;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAkDpC;AAKD,wBAAsB,gBAAgB,kBAuBrC;AAED,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAqD/B;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,YAAY,CAAC,CAenE;AAED,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA4B3B;AAED,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,oBAAoB,EAAE;;;;;;;;;;;;;;;;;;GA8B3E"}
|