@alphafi/alphafi-sdk 0.0.39 → 0.0.41
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/dist/cjs/adminFunctions.d.ts.map +1 -1
- package/dist/cjs/adminFunctions.js +9 -1
- package/dist/cjs/adminFunctions.js.map +1 -1
- package/dist/cjs/common/coins.d.ts.map +1 -1
- package/dist/cjs/common/coins.js +18 -0
- package/dist/cjs/common/coins.js.map +1 -1
- package/dist/cjs/common/constants.d.ts +288 -0
- package/dist/cjs/common/constants.d.ts.map +1 -1
- package/dist/cjs/common/constants.js +214 -8
- package/dist/cjs/common/constants.js.map +1 -1
- package/dist/cjs/common/maps.d.ts +1 -0
- package/dist/cjs/common/maps.d.ts.map +1 -1
- package/dist/cjs/common/maps.js +207 -14
- package/dist/cjs/common/maps.js.map +1 -1
- package/dist/cjs/common/types.d.ts +58 -5
- package/dist/cjs/common/types.d.ts.map +1 -1
- package/dist/cjs/common/types.js.map +1 -1
- package/dist/cjs/graphql/getMultiReceipts.d.ts.map +1 -1
- package/dist/cjs/graphql/getMultiReceipts.js +49 -36
- package/dist/cjs/graphql/getMultiReceipts.js.map +1 -1
- package/dist/cjs/index.d.ts +5 -9
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +17 -8
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/sui-sdk/functions/fetchUserVaultBalances.d.ts.map +1 -1
- package/dist/cjs/sui-sdk/functions/fetchUserVaultBalances.js +2 -3
- package/dist/cjs/sui-sdk/functions/fetchUserVaultBalances.js.map +1 -1
- package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.d.ts.map +1 -1
- package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.js +6 -12
- package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.js.map +1 -1
- package/dist/cjs/sui-sdk/functions/getReceipts.d.ts +6 -3
- package/dist/cjs/sui-sdk/functions/getReceipts.d.ts.map +1 -1
- package/dist/cjs/sui-sdk/functions/getReceipts.js +42 -26
- package/dist/cjs/sui-sdk/functions/getReceipts.js.map +1 -1
- package/dist/cjs/transactions/7k.d.ts +13 -0
- package/dist/cjs/transactions/7k.d.ts.map +1 -0
- package/dist/cjs/transactions/7k.js +46 -0
- package/dist/cjs/transactions/7k.js.map +1 -0
- package/dist/cjs/transactions/alpha.d.ts.map +1 -1
- package/dist/cjs/transactions/alpha.js +1 -0
- package/dist/cjs/transactions/alpha.js.map +1 -1
- package/dist/cjs/transactions/bluefin.d.ts +12 -0
- package/dist/cjs/transactions/bluefin.d.ts.map +1 -1
- package/dist/cjs/transactions/bluefin.js +937 -91
- package/dist/cjs/transactions/bluefin.js.map +1 -1
- package/dist/cjs/transactions/cetus.d.ts +0 -3
- package/dist/cjs/transactions/cetus.d.ts.map +1 -1
- package/dist/cjs/transactions/cetus.js +4 -63
- package/dist/cjs/transactions/cetus.js.map +1 -1
- package/dist/cjs/transactions/deposit.d.ts +3 -0
- package/dist/cjs/transactions/deposit.d.ts.map +1 -1
- package/dist/cjs/transactions/deposit.js +77 -1
- package/dist/cjs/transactions/deposit.js.map +1 -1
- package/dist/cjs/transactions/deposit1.d.ts +1 -0
- package/dist/cjs/transactions/deposit1.d.ts.map +1 -0
- package/dist/cjs/transactions/deposit1.js +86 -0
- package/dist/cjs/transactions/deposit1.js.map +1 -0
- package/dist/cjs/transactions/types.d.ts +14 -0
- package/dist/cjs/transactions/types.d.ts.map +1 -0
- package/dist/cjs/transactions/types.js +3 -0
- package/dist/cjs/transactions/types.js.map +1 -0
- package/dist/cjs/transactions/withdraw.d.ts.map +1 -1
- package/dist/cjs/transactions/withdraw.js +17 -2
- package/dist/cjs/transactions/withdraw.js.map +1 -1
- package/dist/cjs/transactions/zapDeposit.d.ts +9 -0
- package/dist/cjs/transactions/zapDeposit.d.ts.map +1 -1
- package/dist/cjs/transactions/zapDeposit.js +1117 -725
- package/dist/cjs/transactions/zapDeposit.js.map +1 -1
- package/dist/esm/adminFunctions.d.ts.map +1 -1
- package/dist/esm/adminFunctions.js +10 -2
- package/dist/esm/adminFunctions.js.map +1 -1
- package/dist/esm/common/coins.d.ts.map +1 -1
- package/dist/esm/common/coins.js +18 -0
- package/dist/esm/common/coins.js.map +1 -1
- package/dist/esm/common/constants.d.ts +288 -0
- package/dist/esm/common/constants.d.ts.map +1 -1
- package/dist/esm/common/constants.js +214 -8
- package/dist/esm/common/constants.js.map +1 -1
- package/dist/esm/common/maps.d.ts +1 -0
- package/dist/esm/common/maps.d.ts.map +1 -1
- package/dist/esm/common/maps.js +206 -13
- package/dist/esm/common/maps.js.map +1 -1
- package/dist/esm/common/types.d.ts +58 -5
- package/dist/esm/common/types.d.ts.map +1 -1
- package/dist/esm/common/types.js.map +1 -1
- package/dist/esm/graphql/getMultiReceipts.d.ts.map +1 -1
- package/dist/esm/graphql/getMultiReceipts.js +49 -36
- package/dist/esm/graphql/getMultiReceipts.js.map +1 -1
- package/dist/esm/index.d.ts +5 -9
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +5 -9
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/sui-sdk/functions/fetchUserVaultBalances.d.ts.map +1 -1
- package/dist/esm/sui-sdk/functions/fetchUserVaultBalances.js +2 -3
- package/dist/esm/sui-sdk/functions/fetchUserVaultBalances.js.map +1 -1
- package/dist/esm/sui-sdk/functions/getPortfolioAmounts.d.ts.map +1 -1
- package/dist/esm/sui-sdk/functions/getPortfolioAmounts.js +7 -13
- package/dist/esm/sui-sdk/functions/getPortfolioAmounts.js.map +1 -1
- package/dist/esm/sui-sdk/functions/getReceipts.d.ts +6 -3
- package/dist/esm/sui-sdk/functions/getReceipts.d.ts.map +1 -1
- package/dist/esm/sui-sdk/functions/getReceipts.js +43 -26
- package/dist/esm/sui-sdk/functions/getReceipts.js.map +1 -1
- package/dist/esm/transactions/7k.d.ts +13 -0
- package/dist/esm/transactions/7k.d.ts.map +1 -0
- package/dist/esm/transactions/7k.js +42 -0
- package/dist/esm/transactions/7k.js.map +1 -0
- package/dist/esm/transactions/alpha.d.ts.map +1 -1
- package/dist/esm/transactions/alpha.js +1 -0
- package/dist/esm/transactions/alpha.js.map +1 -1
- package/dist/esm/transactions/bluefin.d.ts +12 -0
- package/dist/esm/transactions/bluefin.d.ts.map +1 -1
- package/dist/esm/transactions/bluefin.js +928 -86
- package/dist/esm/transactions/bluefin.js.map +1 -1
- package/dist/esm/transactions/cetus.d.ts +0 -3
- package/dist/esm/transactions/cetus.d.ts.map +1 -1
- package/dist/esm/transactions/cetus.js +2 -57
- package/dist/esm/transactions/cetus.js.map +1 -1
- package/dist/esm/transactions/deposit.d.ts +3 -0
- package/dist/esm/transactions/deposit.d.ts.map +1 -1
- package/dist/esm/transactions/deposit.js +74 -2
- package/dist/esm/transactions/deposit.js.map +1 -1
- package/dist/esm/transactions/deposit1.d.ts +2 -0
- package/dist/esm/transactions/deposit1.d.ts.map +1 -0
- package/dist/esm/transactions/deposit1.js +86 -0
- package/dist/esm/transactions/deposit1.js.map +1 -0
- package/dist/esm/transactions/types.d.ts +14 -0
- package/dist/esm/transactions/types.d.ts.map +1 -0
- package/dist/esm/transactions/types.js +2 -0
- package/dist/esm/transactions/types.js.map +1 -0
- package/dist/esm/transactions/withdraw.d.ts.map +1 -1
- package/dist/esm/transactions/withdraw.js +18 -3
- package/dist/esm/transactions/withdraw.js.map +1 -1
- package/dist/esm/transactions/zapDeposit.d.ts +9 -1
- package/dist/esm/transactions/zapDeposit.d.ts.map +1 -1
- package/dist/esm/transactions/zapDeposit.js +1113 -726
- package/dist/esm/transactions/zapDeposit.js.map +1 -1
- package/docs/assets/highlight.css +78 -0
- package/docs/assets/icons.js +18 -0
- package/docs/assets/icons.svg +1 -0
- package/docs/assets/main.js +60 -0
- package/docs/assets/navigation.js +1 -0
- package/docs/assets/search.js +1 -0
- package/docs/assets/style.css +1493 -0
- package/docs/functions/alphaLpBreakdown.html +1 -0
- package/docs/functions/cetusLpBreakdown.html +1 -0
- package/docs/functions/claimRewardTxb.html +1 -0
- package/docs/functions/coinAmountToXTokensDoubleAsset.html +1 -0
- package/docs/functions/coinAmountToXTokensSingleAsset.html +1 -0
- package/docs/functions/coinsInPool.html +1 -0
- package/docs/functions/collectRewards.html +1 -0
- package/docs/functions/deposit.html +1 -0
- package/docs/functions/depositDoubleAssetTxb.html +1 -0
- package/docs/functions/depositSingleAssetTxb.html +1 -0
- package/docs/functions/fetchAfterTransactionEvents.html +1 -0
- package/docs/functions/fetchAutoCompoundingEvents.html +1 -0
- package/docs/functions/fetchAutoCompoundingEventsGql.html +1 -0
- package/docs/functions/fetchCetusPools.html +1 -0
- package/docs/functions/fetchChainIdentifier.html +1 -0
- package/docs/functions/fetchCheckRatioEvents.html +1 -0
- package/docs/functions/fetchLiquidityChangeEvents.html +1 -0
- package/docs/functions/fetchMultiReceipts.html +1 -0
- package/docs/functions/fetchNftHolders.html +1 -0
- package/docs/functions/fetchPools.html +1 -0
- package/docs/functions/fetchPortfolioData.html +1 -0
- package/docs/functions/fetchProtocolData.html +1 -0
- package/docs/functions/fetchTVL.html +1 -0
- package/docs/functions/fetchUserVaultBalances.html +1 -0
- package/docs/functions/fetchUserVaults.html +1 -0
- package/docs/functions/fetchUserWalletData.html +1 -0
- package/docs/functions/fetchWithdrawV2Events.html +1 -0
- package/docs/functions/getAirdropShare.html +1 -0
- package/docs/functions/getAllDoubleAssetVaults.html +1 -0
- package/docs/functions/getAllSingleAssetVaults.html +1 -0
- package/docs/functions/getAllVaultBalances.html +1 -0
- package/docs/functions/getAllVaults.html +1 -0
- package/docs/functions/getAlphaUnlocks.html +1 -0
- package/docs/functions/getAlphaVaultBalance.html +1 -0
- package/docs/functions/getAmounts.html +1 -0
- package/docs/functions/getApr.html +1 -0
- package/docs/functions/getAprs.html +1 -0
- package/docs/functions/getApy.html +1 -0
- package/docs/functions/getApys.html +1 -0
- package/docs/functions/getCetusInvestorTicksMap.html +1 -0
- package/docs/functions/getCetusSqrtPriceMap.html +1 -0
- package/docs/functions/getCoinAmountsFromLiquidity.html +1 -0
- package/docs/functions/getConf.html +1 -0
- package/docs/functions/getCurrentTick.html +1 -0
- package/docs/functions/getDoubleAssetVaultBalance.html +1 -0
- package/docs/functions/getDoubleAssetVaults.html +1 -0
- package/docs/functions/getHoldersFromTransactions.html +1 -0
- package/docs/functions/getInvestor.html +1 -0
- package/docs/functions/getInvestorPoolMap.html +1 -0
- package/docs/functions/getLastAutoCompoundTime.html +1 -0
- package/docs/functions/getLatestPrices.html +1 -0
- package/docs/functions/getLiquidity.html +1 -0
- package/docs/functions/getMultiInvestor.html +1 -0
- package/docs/functions/getMultiLatestPrices.html +1 -0
- package/docs/functions/getMultiParentPool.html +1 -0
- package/docs/functions/getMultiPool.html +1 -0
- package/docs/functions/getMultiReceipts.html +1 -0
- package/docs/functions/getParentPool.html +1 -0
- package/docs/functions/getPool.html +1 -0
- package/docs/functions/getPoolExchangeRateMap.html +1 -0
- package/docs/functions/getPositionRange.html +1 -0
- package/docs/functions/getPositionTicks.html +1 -0
- package/docs/functions/getPriceToTick.html +1 -0
- package/docs/functions/getRebalanceHistories.html +1 -0
- package/docs/functions/getRebalanceHistory.html +1 -0
- package/docs/functions/getReceipts.html +1 -0
- package/docs/functions/getSingleAssetVaultBalance.html +1 -0
- package/docs/functions/getSingleAssetVaults.html +1 -0
- package/docs/functions/getSuiClient.html +3 -0
- package/docs/functions/getSuiNodeUrl.html +3 -0
- package/docs/functions/getTVLs.html +1 -0
- package/docs/functions/getTickToPrice.html +1 -0
- package/docs/functions/getUserTokensFromTransactions.html +1 -0
- package/docs/functions/getUserTokensInUsdFromTransactions.html +1 -0
- package/docs/functions/getVaultBalance.html +1 -0
- package/docs/functions/getVaultBalanceForActiveUsers.html +1 -0
- package/docs/functions/getVaults.html +1 -0
- package/docs/functions/getXTokenVaultBalanceForActiveUsers.html +1 -0
- package/docs/functions/getZapAmounts.html +1 -0
- package/docs/functions/lastAutocompoundTime.html +1 -0
- package/docs/functions/liquidityToTokens.html +1 -0
- package/docs/functions/multiLiquidityToTokens.html +1 -0
- package/docs/functions/multiTokensToUsd.html +1 -0
- package/docs/functions/multiXTokensToLiquidity.html +1 -0
- package/docs/functions/parseUserWalletData.html +1 -0
- package/docs/functions/setSuiClient.html +7 -0
- package/docs/functions/setSuiNodeUrl.html +5 -0
- package/docs/functions/withdraw.html +1 -0
- package/docs/functions/withdrawAlphaTxb.html +1 -0
- package/docs/functions/withdrawTxb.html +1 -0
- package/docs/functions/zapDepositTxb.html +1 -0
- package/docs/index.html +76 -0
- package/docs/interfaces/Coin.html +12 -0
- package/docs/interfaces/CoinPair.html +3 -0
- package/docs/interfaces/NaviVoloData.html +3 -0
- package/docs/interfaces/RebalanceHistoryType.html +9 -0
- package/docs/modules.html +177 -0
- package/docs/types/AfterTransactionEventNode.html +1 -0
- package/docs/types/Allocator.html +1 -0
- package/docs/types/AlphaFiDoubleAssetVault.html +1 -0
- package/docs/types/AlphaFiMultiVaultBalance.html +1 -0
- package/docs/types/AlphaFiSingleAssetVault.html +1 -0
- package/docs/types/AlphaFiVault.html +1 -0
- package/docs/types/AlphaFiVaultBalance.html +1 -0
- package/docs/types/AlphaPoolType.html +1 -0
- package/docs/types/AlphaReceipt.html +1 -0
- package/docs/types/AlphaReceiptFields.html +1 -0
- package/docs/types/AlphaVaultBalance.html +1 -0
- package/docs/types/AutoCompoundingEventNode.html +1 -0
- package/docs/types/BluefinInvestor.html +1 -0
- package/docs/types/BluefinPoolType.html +1 -0
- package/docs/types/BucketInvestor.html +1 -0
- package/docs/types/CetusInvestor.html +1 -0
- package/docs/types/CetusPoolType.html +1 -0
- package/docs/types/CetusSwapOptions.html +1 -0
- package/docs/types/CoinAmounts.html +1 -0
- package/docs/types/CoinName.html +1 -0
- package/docs/types/CoinType.html +1 -0
- package/docs/types/CommonInvestorFields.html +1 -0
- package/docs/types/CreatePoolOptions.html +1 -0
- package/docs/types/Distributor.html +1 -0
- package/docs/types/DoubleAssetMultiVaultBalance.html +1 -0
- package/docs/types/DoubleAssetPoolNames.html +1 -0
- package/docs/types/DoubleAssetTokenHoldings.html +1 -0
- package/docs/types/DoubleAssetVaultBalance.html +1 -0
- package/docs/types/GetHoldersParams.html +1 -0
- package/docs/types/GetTokenHoldingsParams.html +1 -0
- package/docs/types/GetUserTokensFromTransactionsParams.html +1 -0
- package/docs/types/GetUserTokensInUsdFromTransactionsParams.html +1 -0
- package/docs/types/GetVaultBalanceForActiveUsersParams.html +1 -0
- package/docs/types/GetVaultBalanceParams.html +1 -0
- package/docs/types/HoldingsObj.html +1 -0
- package/docs/types/Icon.html +1 -0
- package/docs/types/Investor.html +1 -0
- package/docs/types/LiquidityChangeEventNode.html +1 -0
- package/docs/types/LiquidityToTokensParams.html +1 -0
- package/docs/types/LiquidityToUsdParams.html +1 -0
- package/docs/types/LoopingDebt.html +1 -0
- package/docs/types/LpBreakdownType.html +1 -0
- package/docs/types/MemberPoolDataType.html +1 -0
- package/docs/types/MemberType.html +1 -0
- package/docs/types/MultiGetVaultBalancesParams.html +1 -0
- package/docs/types/NaviInvestor.html +1 -0
- package/docs/types/OtherReceiptFields.html +1 -0
- package/docs/types/PoolName.html +1 -0
- package/docs/types/PoolReceipt.html +1 -0
- package/docs/types/PoolType.html +1 -0
- package/docs/types/Receipt.html +1 -0
- package/docs/types/ReceiptGQL.html +1 -0
- package/docs/types/SingleAssetMultiVaultBalance.html +1 -0
- package/docs/types/SingleAssetPoolNames.html +1 -0
- package/docs/types/SingleAssetTokenHoldings.html +1 -0
- package/docs/types/SingleAssetVaultBalance.html +1 -0
- package/docs/types/SingleGetVaultBalancesParams.html +1 -0
- package/docs/types/StrategyType.html +1 -0
- package/docs/types/SuiNetwork.html +1 -0
- package/docs/types/SwapOptions.html +1 -0
- package/docs/types/TickSpacing.html +1 -0
- package/docs/types/TotalWeightType.html +1 -0
- package/docs/types/TransactionBlockType.html +1 -0
- package/docs/types/UserPoolLiquidity.html +1 -0
- package/docs/types/UserPoolTokenHoldings.html +1 -0
- package/docs/types/UserUsdHoldings.html +1 -0
- package/docs/types/VaultBalance.html +1 -0
- package/docs/types/WithdrawV2EventNode.html +1 -0
- package/docs/variables/bluefinPoolMap.html +1 -0
- package/docs/variables/cetusPoolMap.html +1 -0
- package/docs/variables/coinsList.html +1 -0
- package/docs/variables/defunctPoolsSet.html +1 -0
- package/docs/variables/doubleAssetPoolCoinMap.html +1 -0
- package/docs/variables/ignoredWalletsForDailyRevenue.html +1 -0
- package/docs/variables/loopingAccountAddresses.html +1 -0
- package/docs/variables/loopingPoolCoinMap.html +1 -0
- package/docs/variables/naviAssetMap.html +1 -0
- package/docs/variables/poolIdPoolNameMap.html +1 -0
- package/docs/variables/poolInfo.html +1 -0
- package/docs/variables/singleAssetPoolCoinMap.html +1 -0
- package/docs/variables/stableCoins.html +1 -0
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchUserVaultBalances.d.ts","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/fetchUserVaultBalances.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,QAAQ,EAET,MAAM,uBAAuB,CAAC;AAW/B,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"fetchUserVaultBalances.d.ts","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/fetchUserVaultBalances.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,QAAQ,EAET,MAAM,uBAAuB,CAAC;AAW/B,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CA0G1C"}
|
|
@@ -45,7 +45,7 @@ async function fetchUserVaultBalances(address, poolName, ignoreCache) {
|
|
|
45
45
|
vaultBalance = res;
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
else if (maps_js_1.poolInfo[poolName].
|
|
48
|
+
else if (maps_js_1.poolInfo[poolName].assetTypes.length === 2) {
|
|
49
49
|
const portfolioAmount = await (0, getPortfolioAmounts_js_1.getPortfolioAmount)(poolName, address, ignoreCache);
|
|
50
50
|
const portfolioAmountInUSD = await (0, getPortfolioAmounts_js_1.getDoubleAssetPortfolioAmountInUSD)(poolName, address, ignoreCache);
|
|
51
51
|
if (portfolioAmount !== undefined && portfolioAmountInUSD !== undefined) {
|
|
@@ -57,8 +57,7 @@ async function fetchUserVaultBalances(address, poolName, ignoreCache) {
|
|
|
57
57
|
vaultBalance = res;
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
else if (maps_js_1.poolInfo[poolName].
|
|
61
|
-
maps_js_1.poolInfo[poolName].parentProtocolName === "BUCKET") {
|
|
60
|
+
else if (maps_js_1.poolInfo[poolName].assetTypes.length === 1) {
|
|
62
61
|
const portfolioAmount = await (0, getPortfolioAmounts_js_1.getSingleAssetPortfolioAmount)(poolName, address, ignoreCache);
|
|
63
62
|
const portfolioAmountInUSD = await (0, getPortfolioAmounts_js_1.getSingleAssetPortfolioAmountInUSD)(poolName, address, ignoreCache);
|
|
64
63
|
if (portfolioAmount !== undefined && portfolioAmountInUSD !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchUserVaultBalances.js","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/fetchUserVaultBalances.ts"],"names":[],"mappings":";;AAgBA,
|
|
1
|
+
{"version":3,"file":"fetchUserVaultBalances.js","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/fetchUserVaultBalances.ts"],"names":[],"mappings":"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","sourcesContent":["import { poolInfo } from \"../../common/maps.js\";\nimport {\n AlphaFiVaultBalance,\n PoolName,\n SingleAssetPoolNames,\n} from \"../../common/types.js\";\nimport { getSuiClient } from \"../client.js\";\nimport {\n getAlphaPortfolioAmount,\n getAlphaPortfolioAmountInUSD,\n getPortfolioAmount,\n getDoubleAssetPortfolioAmountInUSD,\n getSingleAssetPortfolioAmount,\n getSingleAssetPortfolioAmountInUSD,\n} from \"./getPortfolioAmounts.js\";\n\nexport async function fetchUserVaultBalances(\n address: string,\n poolName: PoolName,\n ignoreCache: boolean,\n): Promise<AlphaFiVaultBalance | undefined> {\n const suiClient = getSuiClient();\n\n let vaultBalance: AlphaFiVaultBalance | undefined;\n if (poolInfo[poolName].parentProtocolName === \"ALPHAFI\") {\n const lockedPortfolioAmount = await getAlphaPortfolioAmount(\n \"ALPHA\",\n {\n suiClient,\n address,\n isLocked: true,\n },\n ignoreCache,\n );\n const lockedPortfolioAmountInUSD = await getAlphaPortfolioAmountInUSD(\n \"ALPHA\",\n { suiClient, address, isLocked: true },\n ignoreCache,\n );\n const unlockedPortfolioAmount = await getAlphaPortfolioAmount(\n \"ALPHA\",\n {\n suiClient,\n address,\n isLocked: false,\n },\n ignoreCache,\n );\n const unlockedPortfolioAmountInUSD = await getAlphaPortfolioAmountInUSD(\n \"ALPHA\",\n { suiClient, address, isLocked: false },\n ignoreCache,\n );\n const portfolioAmount = await getAlphaPortfolioAmount(\n \"ALPHA\",\n {\n suiClient,\n address,\n },\n ignoreCache,\n );\n const portfolioAmountInUSD = await getAlphaPortfolioAmountInUSD(\n \"ALPHA\",\n {\n suiClient,\n address,\n },\n ignoreCache,\n );\n if (\n lockedPortfolioAmount !== undefined &&\n lockedPortfolioAmountInUSD !== undefined &&\n unlockedPortfolioAmount !== undefined &&\n unlockedPortfolioAmountInUSD !== undefined &&\n portfolioAmount !== undefined &&\n portfolioAmountInUSD !== undefined\n ) {\n const res: AlphaFiVaultBalance = {\n lockedAlphaCoins: lockedPortfolioAmount,\n lockedAlphaCoinsInUSD: lockedPortfolioAmountInUSD,\n unlockedAlphaCoins: unlockedPortfolioAmount,\n unlockedAlphaCoinsInUSD: unlockedPortfolioAmountInUSD,\n totalAlphaCoins: portfolioAmount,\n totalAlphaCoinsInUSD: portfolioAmountInUSD,\n };\n vaultBalance = res;\n }\n } else if (poolInfo[poolName].assetTypes.length === 2) {\n const portfolioAmount = await getPortfolioAmount(\n poolName as PoolName,\n address,\n ignoreCache,\n );\n const portfolioAmountInUSD = await getDoubleAssetPortfolioAmountInUSD(\n poolName as PoolName,\n address,\n ignoreCache,\n );\n if (portfolioAmount !== undefined && portfolioAmountInUSD !== undefined) {\n const res: AlphaFiVaultBalance = {\n coinA: portfolioAmount[0].toString(),\n coinB: portfolioAmount[1].toString(),\n valueInUSD: portfolioAmountInUSD,\n };\n vaultBalance = res;\n }\n } else if (poolInfo[poolName].assetTypes.length === 1) {\n const portfolioAmount = await getSingleAssetPortfolioAmount(\n poolName as SingleAssetPoolNames,\n address,\n ignoreCache,\n );\n const portfolioAmountInUSD = await getSingleAssetPortfolioAmountInUSD(\n poolName as SingleAssetPoolNames,\n address,\n ignoreCache,\n );\n if (portfolioAmount !== undefined && portfolioAmountInUSD !== undefined) {\n const res: AlphaFiVaultBalance = {\n coin: portfolioAmount.toString(),\n valueInUSD: portfolioAmountInUSD,\n };\n vaultBalance = res;\n }\n }\n return vaultBalance;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPortfolioAmounts.d.ts","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/getPortfolioAmounts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EACL,QAAQ,EAUT,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"getPortfolioAmounts.d.ts","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/getPortfolioAmounts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EACL,QAAQ,EAUT,MAAM,gBAAgB,CAAC;AAmBxB,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EACtE,WAAW,EAAE,OAAO,+BA+CrB;AAED,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EACtE,WAAW,EAAE,OAAO,+BASrB;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CA0BvC;AAED,wBAAsB,kCAAkC,CACtD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA2B7B;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAa7B;AAED,wBAAsB,6BAA6B,CACjD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,mBAmKrB;AAED,wBAAsB,kCAAkC,CACtD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA6B7B"}
|
|
@@ -86,7 +86,7 @@ async function getPortfolioAmount(poolName, address, ignoreCache) {
|
|
|
86
86
|
const poolExchangeRate = await (0, getReceipts_js_1.getPoolExchangeRate)(poolName, ignoreCache);
|
|
87
87
|
if (poolExchangeRate) {
|
|
88
88
|
const tokens = totalXTokens.mul(poolExchangeRate);
|
|
89
|
-
const poolTokenAmounts = await (0,
|
|
89
|
+
const poolTokenAmounts = await (0, index_js_1.getCoinAmountsFromLiquidity)(poolName, tokens.toString(), ignoreCache);
|
|
90
90
|
portfolioAmount = poolTokenAmounts;
|
|
91
91
|
}
|
|
92
92
|
else {
|
|
@@ -96,23 +96,17 @@ async function getPortfolioAmount(poolName, address, ignoreCache) {
|
|
|
96
96
|
return portfolioAmount;
|
|
97
97
|
}
|
|
98
98
|
async function getDoubleAssetPortfolioAmountInUSD(poolName, address, ignoreCache) {
|
|
99
|
-
if (poolName
|
|
99
|
+
if (index_js_1.poolInfo[poolName].assetTypes.length === 2) {
|
|
100
100
|
const amounts = await getPortfolioAmount(poolName, address, ignoreCache);
|
|
101
|
-
if (amounts
|
|
101
|
+
if (amounts) {
|
|
102
102
|
const ten = new decimal_js_1.Decimal(10);
|
|
103
103
|
const pool1 = maps_js_1.doubleAssetPoolCoinMap[poolName].coin1;
|
|
104
104
|
const pool2 = maps_js_1.doubleAssetPoolCoinMap[poolName].coin2;
|
|
105
105
|
const amount0 = new decimal_js_1.Decimal(amounts[0]).div(ten.pow(coins_js_1.coinsList[pool1].expo));
|
|
106
106
|
const amount1 = new decimal_js_1.Decimal(amounts[1]).div(ten.pow(coins_js_1.coinsList[pool2].expo));
|
|
107
|
-
const
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
`${tokens[1]}/USD`,
|
|
111
|
-
], ignoreCache);
|
|
112
|
-
if (priceOfCoin0 && priceOfCoin1) {
|
|
113
|
-
const amount = amount0.mul(priceOfCoin0).add(amount1.mul(priceOfCoin1));
|
|
114
|
-
return amount.toString();
|
|
115
|
-
}
|
|
107
|
+
const [priceOfCoin0, priceOfCoin1] = await (0, prices_js_2.getLatestPrices)([`${pool1}/USD`, `${pool2}/USD`], ignoreCache);
|
|
108
|
+
const amount = amount0.mul(priceOfCoin0).add(amount1.mul(priceOfCoin1));
|
|
109
|
+
return amount.toString();
|
|
116
110
|
}
|
|
117
111
|
else {
|
|
118
112
|
console.error(`getPortfolioAmountInUSD is not implemented for poolName: ${poolName}`);
|
|
@@ -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 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
|
+
{"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 PoolName,\n NaviInvestor,\n CommonInvestorFields,\n poolInfo,\n loopingPoolCoinMap,\n getSuiClient,\n LoopingDebt,\n cetusPoolMap,\n getParentPool,\n getCoinAmountsFromLiquidity,\n} from \"../../index.js\";\nimport {\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 (poolInfo[poolName].assetTypes.length === 2) {\n const amounts = await getPortfolioAmount(poolName, address, ignoreCache);\n if (amounts) {\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 [priceOfCoin0, priceOfCoin1] = await getLatestPrices(\n [`${pool1}/USD` as PythPriceIdPair, `${pool2}/USD` as PythPriceIdPair],\n ignoreCache,\n );\n const amount = amount0.mul(priceOfCoin0).add(amount1.mul(priceOfCoin1));\n return amount.toString();\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,4 +1,4 @@
|
|
|
1
|
-
import { AlphaPoolType, NaviInvestor, CommonInvestorFields, CetusPoolType, PoolName, PoolType, Receipt, NaviVoloData, Investor, SingleAssetPoolNames, ReceiptGQL, Distributor } from "../../index.js";
|
|
1
|
+
import { AlphaPoolType, NaviInvestor, CommonInvestorFields, CetusPoolType, PoolName, PoolType, Receipt, NaviVoloData, Investor, SingleAssetPoolNames, ReceiptGQL, Distributor, BluefinPoolType } from "../../index.js";
|
|
2
2
|
import { Decimal } from "decimal.js";
|
|
3
3
|
export declare function convertReceiptGQLToReceipt(receipts: ReceiptGQL[]): Receipt[];
|
|
4
4
|
export declare function getMultiReceipts(address: string): Promise<void>;
|
|
@@ -7,11 +7,10 @@ export declare function getPoolExchangeRate(poolName: PoolName, ignoreCache: boo
|
|
|
7
7
|
export declare function getMultiPool(): Promise<void>;
|
|
8
8
|
export declare function getPool(poolName: string, ignoreCache: boolean): Promise<PoolType | AlphaPoolType>;
|
|
9
9
|
export declare function getMultiParentPool(): Promise<void>;
|
|
10
|
-
export declare function getParentPool(poolName: string, ignoreCache: boolean): Promise<CetusPoolType>;
|
|
10
|
+
export declare function getParentPool(poolName: string, ignoreCache: boolean): Promise<CetusPoolType | BluefinPoolType>;
|
|
11
11
|
export declare function getMultiInvestor(): Promise<void>;
|
|
12
12
|
export declare function getInvestor(poolName: PoolName, ignoreCache: boolean): Promise<Investor>;
|
|
13
13
|
export declare function fetchVoloExchangeRate(): Promise<NaviVoloData>;
|
|
14
|
-
export declare function getCoinAmountsFromLiquidity(poolName: PoolName, liquidity: string, ignoreCache: boolean): Promise<[string, string]>;
|
|
15
14
|
export declare function multiGetNaviInvestor(poolNames: SingleAssetPoolNames[]): Promise<{
|
|
16
15
|
ALPHA?: (NaviInvestor & CommonInvestorFields) | undefined;
|
|
17
16
|
"NAVI-SUI"?: (NaviInvestor & CommonInvestorFields) | undefined;
|
|
@@ -33,4 +32,8 @@ export declare function multiGetNaviInvestor(poolNames: SingleAssetPoolNames[]):
|
|
|
33
32
|
"NAVI-NAVX"?: (NaviInvestor & CommonInvestorFields) | undefined;
|
|
34
33
|
}>;
|
|
35
34
|
export declare function getDistributor(ignoreCache: boolean): Promise<Distributor | undefined>;
|
|
35
|
+
export declare function getPositionRange(ignoreCache: boolean): Promise<Map<PoolName, {
|
|
36
|
+
lowerPrice: string;
|
|
37
|
+
upperPrice: string;
|
|
38
|
+
}>>;
|
|
36
39
|
//# 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,EAEb,YAAY,EACZ,oBAAoB,EACpB,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,EACb,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,QAAQ,EAGR,oBAAoB,EAEpB,UAAU,EAGV,WAAW,EAEX,eAAe,EAEhB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAKrC,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,QAAQ,EAClB,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,CAAC,CAgClB;AAKD,wBAAsB,YAAY,kBAuBjC;AAED,wBAAsB,OAAO,CAC3B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,QAAQ,GAAG,aAAa,CAAC,CAgDnC;AAOD,wBAAsB,kBAAkB,kBAuBvC;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,aAAa,GAAG,eAAe,CAAC,CAkD1C;AAKD,wBAAsB,gBAAgB,kBAuBrC;AAED,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,QAAQ,CAAC,CAqDnB;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,YAAY,CAAC,CAenE;AAED,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,oBAAoB,EAAE;;;;;;;;;;;;;;;;;;;GA8B3E;AAOD,wBAAsB,cAAc,CAClC,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CA6ClC;AAED,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAuDpE"}
|
|
@@ -11,17 +11,15 @@ exports.getParentPool = getParentPool;
|
|
|
11
11
|
exports.getMultiInvestor = getMultiInvestor;
|
|
12
12
|
exports.getInvestor = getInvestor;
|
|
13
13
|
exports.fetchVoloExchangeRate = fetchVoloExchangeRate;
|
|
14
|
-
exports.getCoinAmountsFromLiquidity = getCoinAmountsFromLiquidity;
|
|
15
14
|
exports.multiGetNaviInvestor = multiGetNaviInvestor;
|
|
16
15
|
exports.getDistributor = getDistributor;
|
|
17
|
-
|
|
16
|
+
exports.getPositionRange = getPositionRange;
|
|
18
17
|
const index_js_1 = require("../../index.js");
|
|
19
18
|
const maps_js_1 = require("../../common/maps.js");
|
|
20
|
-
const cetus_sui_clmm_sdk_1 = require("@cetusprotocol/cetus-sui-clmm-sdk");
|
|
21
|
-
const bn_js_1 = tslib_1.__importDefault(require("bn.js"));
|
|
22
19
|
const decimal_js_1 = require("decimal.js");
|
|
23
20
|
const client_js_1 = require("../client.js");
|
|
24
21
|
const simpleCache_js_1 = require("../../utils/simpleCache.js");
|
|
22
|
+
const cetus_sui_clmm_sdk_1 = require("@cetusprotocol/cetus-sui-clmm-sdk");
|
|
25
23
|
function convertReceiptGQLToReceipt(receipts) {
|
|
26
24
|
const res = receipts.map((receipt) => {
|
|
27
25
|
return {
|
|
@@ -313,7 +311,7 @@ async function getMultiParentPool() {
|
|
|
313
311
|
}
|
|
314
312
|
async function getParentPool(poolName, ignoreCache) {
|
|
315
313
|
const suiClient = (0, client_js_1.getSuiClient)();
|
|
316
|
-
const cacheKey = `pool_${
|
|
314
|
+
const cacheKey = `pool_${poolName}`;
|
|
317
315
|
if (ignoreCache) {
|
|
318
316
|
cetusPoolCache.delete(cacheKey);
|
|
319
317
|
cetusPoolPromiseCache.delete(cacheKey);
|
|
@@ -459,27 +457,6 @@ async function fetchVoloExchangeRate() {
|
|
|
459
457
|
});
|
|
460
458
|
return NaviVoloDetails;
|
|
461
459
|
}
|
|
462
|
-
async function getCoinAmountsFromLiquidity(poolName, liquidity, ignoreCache) {
|
|
463
|
-
const clmmPool = await getParentPool(poolName, ignoreCache);
|
|
464
|
-
const investor = (await getInvestor(poolName, ignoreCache));
|
|
465
|
-
const upper_bound = 443636;
|
|
466
|
-
let lower_tick = Number(investor.content.fields.lower_tick);
|
|
467
|
-
let upper_tick = Number(investor.content.fields.upper_tick);
|
|
468
|
-
if (lower_tick > upper_bound) {
|
|
469
|
-
lower_tick = -~(lower_tick - 1);
|
|
470
|
-
}
|
|
471
|
-
if (upper_tick > upper_bound) {
|
|
472
|
-
upper_tick = -~(upper_tick - 1);
|
|
473
|
-
}
|
|
474
|
-
if (clmmPool) {
|
|
475
|
-
const liquidityInt = Math.floor(parseFloat(liquidity));
|
|
476
|
-
const coin_amounts = cetus_sui_clmm_sdk_1.ClmmPoolUtil.getCoinAmountFromLiquidity(new bn_js_1.default(`${liquidityInt}`), new bn_js_1.default(clmmPool.content.fields.current_sqrt_price), cetus_sui_clmm_sdk_1.TickMath.tickIndexToSqrtPriceX64(lower_tick), cetus_sui_clmm_sdk_1.TickMath.tickIndexToSqrtPriceX64(upper_tick), true);
|
|
477
|
-
return [coin_amounts.coinA.toString(), coin_amounts.coinB.toString()];
|
|
478
|
-
}
|
|
479
|
-
else {
|
|
480
|
-
return ["0", "0"];
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
460
|
async function multiGetNaviInvestor(poolNames) {
|
|
484
461
|
const results = {};
|
|
485
462
|
const poolInvestorIds = [];
|
|
@@ -550,6 +527,45 @@ async function getDistributor(ignoreCache) {
|
|
|
550
527
|
distributorPromiseCache.set(cacheKey, distributorPromise);
|
|
551
528
|
return distributorPromise;
|
|
552
529
|
}
|
|
530
|
+
async function getPositionRange(ignoreCache) {
|
|
531
|
+
const res = new Map();
|
|
532
|
+
for (const poolNameString of Object.keys(maps_js_1.poolInfo)) {
|
|
533
|
+
const poolName = poolNameString;
|
|
534
|
+
if (poolName == "ALPHA" ||
|
|
535
|
+
!["CETUS", "BLUEFIN"].includes(maps_js_1.poolInfo[poolNameString].parentProtocolName)) {
|
|
536
|
+
continue;
|
|
537
|
+
}
|
|
538
|
+
let investor;
|
|
539
|
+
if (maps_js_1.poolInfo[poolNameString].parentProtocolName == "CETUS") {
|
|
540
|
+
investor = (await getInvestor(poolName, ignoreCache));
|
|
541
|
+
}
|
|
542
|
+
else {
|
|
543
|
+
investor = (await getInvestor(poolName, ignoreCache));
|
|
544
|
+
}
|
|
545
|
+
const coinAName = maps_js_1.doubleAssetPoolCoinMap[poolName].coin1;
|
|
546
|
+
const coinA = index_js_1.coinsList[coinAName];
|
|
547
|
+
const coinBName = maps_js_1.doubleAssetPoolCoinMap[poolName].coin2;
|
|
548
|
+
const coinB = index_js_1.coinsList[coinBName];
|
|
549
|
+
if (investor) {
|
|
550
|
+
const upperBound = 443636;
|
|
551
|
+
let lowerTick = Number(investor.content.fields.lower_tick);
|
|
552
|
+
let upperTick = Number(investor.content.fields.upper_tick);
|
|
553
|
+
if (lowerTick > upperBound) {
|
|
554
|
+
lowerTick = -~(lowerTick - 1);
|
|
555
|
+
}
|
|
556
|
+
if (upperTick > upperBound) {
|
|
557
|
+
upperTick = -~(upperTick - 1);
|
|
558
|
+
}
|
|
559
|
+
const lowerPrice = cetus_sui_clmm_sdk_1.TickMath.tickIndexToPrice(lowerTick, coinA.expo, coinB.expo);
|
|
560
|
+
const upperPrice = cetus_sui_clmm_sdk_1.TickMath.tickIndexToPrice(upperTick, coinA.expo, coinB.expo);
|
|
561
|
+
res.set(poolName, {
|
|
562
|
+
lowerPrice: lowerPrice.toString(),
|
|
563
|
+
upperPrice: upperPrice.toString(),
|
|
564
|
+
});
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
return res;
|
|
568
|
+
}
|
|
553
569
|
/*
|
|
554
570
|
for the missing pools, add a promise, each of those promises waits for there respective object from a map, that map is populated all at once,
|
|
555
571
|
problem with concurrency
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getReceipts.js","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/getReceipts.ts"],"names":[],"mappings":";;AA8BA,gEAyEC;AAKD,4CA0BC;AAED,kCAoEC;AAED,kDAmCC;AAKD,oCAuBC;AAED,0BAmDC;AAKD,gDAuBC;AAED,sCAqDC;AAKD,4CAuBC;AAED,kCAwDC;AAED,sDAeC;AAED,kEAgCC;AAED,oDA8BC;AAOD,wCA+CC;;AAnnBD,6CAqBwB;AACxB,kDAAgD;AAChD,0EAA2E;AAC3E,0DAAuB;AACvB,2CAAqC;AACrC,4CAA4C;AAC5C,+DAAyD;AAEzD,SAAgB,0BAA0B,CAAC,QAAsB;IAC/D,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACnC,OAAO;YACL,QAAQ,EAAE,OAAO,CAAC,OAAO;YACzB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE;gBACP,QAAQ,EAAE,YAAY,EAAE,2DAA2D;gBACnF,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI;gBAChC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;gBAC5C,MAAM,EAAE;oBACN,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE;oBACpC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS;oBAC1C,0BAA0B,EAAE;wBAC1B,IAAI,EAAE,SAAS,EAAE,uBAAuB;wBACxC,MAAM,EAAE;4BACN,QAAQ,EACN,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,GAAG,CAC3D,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gCACT,IAAI,EAAE,SAAS,EAAE,uBAAuB;gCACxC,MAAM,EAAE;oCACN,KAAK,EAAE,IAAI,CAAC,KAAK;oCACjB,GAAG,EAAE;wCACH,IAAI,EAAE,SAAS,EAAE,uBAAuB;wCACxC,MAAM,EAAE;4CACN,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI;yCACpB;qCACF;iCACF;6BACF,CAAC,CACH;yBACJ;qBACF;oBACD,cAAc,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc;wBAClD,CAAC,CAAC;4BACE,IAAI,EAAE,SAAS,EAAE,uBAAuB;4BACxC,MAAM,EAAE;gCACN,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI;gCAC/C,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE;gCACnD,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI;gCAC/C,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI;6BAChD;yBACF;wBACH,CAAC,CAAC,SAAS;oBACb,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI;oBAChC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK;oBAClC,eAAe,EAAE;wBACf,IAAI,EAAE,SAAS,EAAE,uBAAuB;wBACxC,MAAM,EAAE;4BACN,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAC1D,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gCACT,IAAI,EAAE,SAAS,EAAE,uBAAuB;gCACxC,MAAM,EAAE;oCACN,GAAG,EAAE;wCACH,IAAI,EAAE,SAAS,EAAE,uBAAuB;wCACxC,MAAM,EAAE;4CACN,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI;yCACpB;qCACF;oCACD,KAAK,EAAE,IAAI,CAAC,KAAK;iCAClB;6BACF,CAAC,CACH;yBACF;qBACF;oBACD,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO;oBACtC,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa;oBAClD,gBAAgB,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,IAAI,SAAS;iBACtE;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,aAAa,GAAG,IAAI,4BAAW,CAAY,OAAO,CAAC,CAAC;AAC1D,MAAM,oBAAoB,GAAG,IAAI,4BAAW,CAAqB,OAAO,CAAC,CAAC;AAEnE,KAAK,UAAU,gBAAgB,CAAC,OAAe;IACpD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,IAAA,6BAAkB,EAAC,OAAO,CAAC,CAAC;QACrD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,kBAAQ,CAAC,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAG,eAAe,kBAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,OAAO,EAAE,CAAC;YACxE,IAAI,OAAO,GAAc,EAAE,CAAC;YAC5B,IAAI,UAAU,CAAC,GAAG,CAAC,kBAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/C,OAAO,GAAG,0BAA0B,CAClC,UAAU,CAAC,GAAG,CAAC,kBAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,CAAiB,CAC3D,CAAC;YACJ,CAAC;YACD,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;QAC9D,4BAA4B;QAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAQ,CAAC,CAAC;QACpC,MAAM,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACzC,OAAO,WAAW,CAAC,IAAgB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACpD,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YAClC,MAAM,QAAQ,GAAG,eAAe,kBAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,IAAI,OAAO,EAAE,CAAC;YAChF,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,WAAW,CAC/B,QAAkB,EAClB,OAAe,EACf,WAAoB;IAEpB,MAAM,SAAS,GAAG,IAAA,wBAAY,GAAE,CAAC;IACjC,MAAM,gBAAgB,GAAG,eAAe,kBAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,IAAI,OAAO,EAAE,CAAC;IACpF,IAAI,WAAW,EAAE,CAAC;QAChB,aAAa,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACvC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,cAAc,GAAG,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC3D,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,EAAE;IACF,MAAM,IAAI,GAAc,EAAE,CAAC;IAC3B,IAAI,kBAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,aAAa,GAAG,oBAAoB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/D,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,aAAa,GAAG,CAAC,KAAK,IAAwB,EAAE;YAC9C,0DAA0D;YAC1D,IAAI,aAAa,GAA8B,IAAI,CAAC;YACpD,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,gBAAgB,GACpB,MAAM,SAAS,CAAC,eAAe,CAAC;oBAC9B,KAAK,EAAE,OAAO;oBACd,MAAM,EAAE,aAAa;oBACrB,MAAM,EAAE;wBACN,sDAAsD;wBACtD,UAAU,EAAE,kBAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW;qBAC3C;oBACD,OAAO,EAAE;wBACP,WAAW,EAAE,IAAI;qBAClB;iBACF,CAAC,CAAC;gBACL,yDAAyD;gBACzD,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;oBACpC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAe,CAAC;oBAC9B,IAAI,CAAC,EAAE,CAAC;wBACN,IAAI,kBAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;4BAC7D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBACf,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,+BAA+B;gBAC/B,IAAI,gBAAgB,CAAC,WAAW,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAAC;oBAChE,aAAa,GAAG,gBAAgB,CAAC,UAAU,CAAC;gBAC9C,CAAC;qBAAM,CAAC;oBACN,0BAA0B;oBAC1B,8CAA8C;oBAC9C,MAAM;gBACR,CAAC;YACH,CAAC;YACD,aAAa,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;YAC1C,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACnB,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,gCAAgC;YAC/E,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;QACH,oCAAoC;QACpC,6CAA6C;QAC7C,oBAAoB,CAAC,GAAG,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAEM,KAAK,UAAU,mBAAmB,CACvC,QAAkB,EAClB,WAAoB;IAEpB,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC5C,MAAM,YAAY,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACnE,IAAI,cAAc,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACrE,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;YACxB,cAAc,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC9D,CAAC;aAAM,IAAI,kBAAQ,CAAC,QAAQ,CAAC,CAAC,kBAAkB,IAAI,OAAO,EAAE,CAAC;YAC5D,MAAM,QAAQ,GAAG,CAAC,MAAM,WAAW,CACjC,QAAQ,EACR,WAAW,CACZ,CAAyC,CAAC;YAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,2CAA2C,QAAQ,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,cAAc,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACnE,CAAC;QAED,6BAA6B;QAC7B,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACjE,OAAO,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;QACD,MAAM,gBAAgB,GAAG,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1D,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CACT,4CAA4C,QAAQ,gBAAgB,GAAG,EAAE,CAC1E,CAAC;QACF,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,4BAAW,EAA4B,CAAC;AAC9D,MAAM,gBAAgB,GAAG,IAAI,4BAAW,EAAqC,CAAC;AAEvE,KAAK,UAAU,YAAY;IAChC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAQ,CAAC,CAAC;IAClC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC5B,OAAO,kBAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACjC,OAAO,kBAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAC/B,CAAC,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,IAAA,wBAAY,GAAE,CAAC,eAAe,CAAC;YAC7C,GAAG,EAAE,OAAO;YACZ,OAAO,EAAE;gBACP,WAAW,EAAE,IAAI;aAClB;SACF,CAAC,CAAC;QACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAgC,CAAC;YACvD,MAAM,QAAQ,GAAG,QAAQ,kBAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YACrD,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,OAAO,CAC3B,QAAgB,EAChB,WAAoB;IAEpB,MAAM,SAAS,GAAG,IAAA,wBAAY,GAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,QAAQ,kBAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IAEnE,IAAI,WAAW,EAAE,CAAC;QAChB,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3B,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,4CAA4C;IAC5C,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,mDAAmD;IACnD,IAAI,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,4CAA4C;IAC5C,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC;gBAClC,EAAE,EAAE,kBAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM;gBAC7B,OAAO,EAAE;oBACP,WAAW,EAAE,IAAI;iBAClB;aACF,CAAC,CAAC;YAEH,MAAM,QAAQ,GACZ,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC,IAAsB,CAAC,CAAC,CAAE,CAAC,CAAC,IAAiB,CAAC;YAE1E,wBAAwB;YACxB,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAClC,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,iCAAiC,QAAQ,EAAE,CAAC,CAAC;YAC3D,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,sDAAsD;YACtD,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,oBAAoB;IACpB,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC5C,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,cAAc,GAAG,IAAI,4BAAW,EAAiB,CAAC;AACxD,MAAM,qBAAqB,GAAG,IAAI,4BAAW,EAA0B,CAAC;AAEjE,KAAK,UAAU,kBAAkB;IACtC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAQ,CAAC,CAAC;IAClC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC5B,OAAO,kBAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACjC,OAAO,kBAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;IACrC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,IAAA,wBAAY,GAAE,CAAC,eAAe,CAAC;YAC7C,GAAG,EAAE,OAAO;YACZ,OAAO,EAAE;gBACP,WAAW,EAAE,IAAI;aAClB;SACF,CAAC,CAAC;QACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAqB,CAAC;YAC5C,MAAM,QAAQ,GAAG,QAAQ,kBAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;YAC3D,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,QAAgB,EAChB,WAAoB;IAEpB,MAAM,SAAS,GAAG,IAAA,wBAAY,GAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,QAAQ,uBAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;IAChE,IAAI,WAAW,EAAE,CAAC;QAChB,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,4CAA4C;IAC5C,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,mDAAmD;IACnD,IAAI,gBAAgB,GAAG,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3D,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,4CAA4C;IAC5C,gBAAgB,GAAG,CAAC,KAAK,IAAI,EAAE;QAC7B,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,kBAAQ,CAAC,QAAQ,CAAC;gBAC3B,CAAC,CAAC,kBAAQ,CAAC,QAAQ,CAAC,CAAC,YAAY;gBACjC,CAAC,CAAC,uBAAY,CAAC,QAAQ,CAAC;oBACtB,CAAC,CAAC,uBAAY,CAAC,QAAQ,CAAC;oBACxB,CAAC,CAAC,yBAAc,CAAC,QAAQ,CAAC,CAAC;YAC/B,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC;gBAClC,EAAE,EAAE,EAAE;gBACN,OAAO,EAAE;oBACP,WAAW,EAAE,IAAI;iBAClB;aACF,CAAC,CAAC;YACH,MAAM,SAAS,GAAG,CAAC,CAAC,IAAqB,CAAC;YAE1C,wBAAwB;YACxB,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACxC,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,qCAAqC,QAAQ,EAAE,CAAC,CAAC;YAC/D,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,sDAAsD;YACtD,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,oBAAoB;IACpB,qBAAqB,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IACtD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,MAAM,aAAa,GAAG,IAAI,4BAAW,EAAY,CAAC;AAClD,MAAM,oBAAoB,GAAG,IAAI,4BAAW,EAAqB,CAAC;AAE3D,KAAK,UAAU,gBAAgB;IACpC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAQ,CAAC,CAAC;IAClC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC5B,OAAO,kBAAQ,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACrC,OAAO,kBAAQ,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;IACnC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,IAAA,wBAAY,GAAE,CAAC,eAAe,CAAC;YAC7C,GAAG,EAAE,WAAW;YAChB,OAAO,EAAE;gBACP,WAAW,EAAE,IAAI;aAClB;SACF,CAAC,CAAC;QACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAgB,CAAC;YAC3C,MAAM,QAAQ,GAAG,YAAY,kBAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC7D,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,WAAW,CAC/B,QAAkB,EAClB,WAAoB;IAEpB,MAAM,SAAS,GAAG,IAAA,wBAAY,GAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,YAAY,kBAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IAC3E,IAAI,WAAW,EAAE,CAAC;QAChB,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/B,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IACD,gDAAgD;IAChD,MAAM,cAAc,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,mDAAmD;IACnD,IAAI,oBAAoB,GAAG,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9D,IAAI,oBAAoB,EAAE,CAAC;QACzB,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IACD,4CAA4C;IAC5C,oBAAoB,GAAG,CAAC,KAAK,IAAI,EAAE;QACjC,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC;gBAClC,EAAE,EAAE,kBAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,UAAU;gBAC/C,OAAO,EAAE;oBACP,WAAW,EAAE,IAAI;iBAClB;aACF,CAAC,CAAC;YACH,IAAI,aAAa,CAAC;YAClB,IAAI,kBAAQ,CAAC,QAAQ,CAAC,CAAC,kBAAkB,IAAI,MAAM,EAAE,CAAC;gBACpD,aAAa,GAAG,CAAC,CAAC,IAA2C,CAAC;YAChE,CAAC;iBAAM,IAAI,kBAAQ,CAAC,QAAQ,CAAC,CAAC,kBAAkB,IAAI,QAAQ,EAAE,CAAC;gBAC7D,aAAa,GAAG,CAAC,CAAC,IAA6C,CAAC;YAClE,CAAC;iBAAM,IAAI,kBAAQ,CAAC,QAAQ,CAAC,CAAC,kBAAkB,IAAI,SAAS,EAAE,CAAC;gBAC9D,aAAa,GAAG,CAAC,CAAC,IAA8C,CAAC;YACnE,CAAC;iBAAM,CAAC;gBACN,aAAa,GAAG,CAAC,CAAC,IAA4C,CAAC;YACjE,CAAC;YAED,4BAA4B;YAC5B,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YAC3C,OAAO,aAAa,CAAC;QACvB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,gCAAgC,QAAQ,EAAE,CAAC,CAAC;YAC1D,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,sDAAsD;YACtD,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,oBAAoB;IACpB,oBAAoB,CAAC,GAAG,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;IACzD,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAEM,KAAK,UAAU,qBAAqB;IACzC,MAAM,MAAM,GAAG,iDAAiD,CAAC;IACjE,MAAM,eAAe,GAAiB,MAAM,KAAK,CAAC,MAAM,CAAC;SACtD,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QACvB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAiB,CAAC,CAAC,0BAA0B;QAChF,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACf,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;QACxD,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;IACL,OAAO,eAAe,CAAC;AACzB,CAAC;AAEM,KAAK,UAAU,2BAA2B,CAC/C,QAAkB,EAClB,SAAiB,EACjB,WAAoB;IAEpB,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,CAAC,MAAM,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,CACpC,CAAC;IAEvB,MAAM,WAAW,GAAG,MAAM,CAAC;IAC3B,IAAI,UAAU,GAAG,MAAM,CAAC,QAAS,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7D,IAAI,UAAU,GAAG,MAAM,CAAC,QAAS,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAE7D,IAAI,UAAU,GAAG,WAAW,EAAE,CAAC;QAC7B,UAAU,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,UAAU,GAAG,WAAW,EAAE,CAAC;QAC7B,UAAU,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;QACvD,MAAM,YAAY,GAAgB,iCAAY,CAAC,0BAA0B,CACvE,IAAI,eAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EACzB,IAAI,eAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAClD,6BAAQ,CAAC,uBAAuB,CAAC,UAAU,CAAC,EAC5C,6BAAQ,CAAC,uBAAuB,CAAC,UAAU,CAAC,EAC5C,IAAI,CACL,CAAC;QACF,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,oBAAoB,CAAC,SAAiC;IAC1E,MAAM,OAAO,GAIT,EAAE,CAAC;IACP,MAAM,eAAe,GAAa,EAAE,CAAC;IAErC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,eAAe,CAAC,IAAI,CAAC,kBAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAA,wBAAY,GAAE,CAAC;QACjC,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC;YAC9C,GAAG,EAAE,eAAe;YACpB,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;SAC/B,CAAC,CAAC;QACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAA2C,CAAC;YACxE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;QACnC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,SAAS;QACT,OAAO,CAAC,KAAK,CACX,6CAA6C,EAC7C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CACrB,CAAC;QACF,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,gBAAgB,GAAG,IAAI,4BAAW,EAAe,CAAC;AACxD,MAAM,uBAAuB,GAAG,IAAI,4BAAW,EAE5C,CAAC;AAEG,KAAK,UAAU,cAAc,CAClC,WAAoB;IAEpB,MAAM,SAAS,GAAG,IAAA,wBAAY,GAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,eAAe,IAAA,kBAAO,GAAE,CAAC,iBAAiB,EAAE,CAAC;IAC9D,IAAI,WAAW,EAAE,CAAC;QAChB,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IACD,mDAAmD;IACnD,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,mDAAmD;IACnD,IAAI,kBAAkB,GAAG,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/D,IAAI,kBAAkB,EAAE,CAAC;QACvB,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,4CAA4C;IAC5C,kBAAkB,GAAG,CAAC,KAAK,IAAI,EAAE;QAC/B,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC;gBAClC,EAAE,EAAE,IAAA,kBAAO,GAAE,CAAC,iBAAiB;gBAC/B,OAAO,EAAE;oBACP,WAAW,EAAE,IAAI;iBAClB;aACF,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,CAAC,CAAC,IAAmB,CAAC;YAE1C,+BAA+B;YAC/B,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC5C,OAAO,WAAW,CAAC;QACrB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACvC,OAAO,SAAS,CAAC;QACnB,CAAC;gBAAS,CAAC;YACT,sDAAsD;YACtD,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,oBAAoB;IACpB,uBAAuB,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IAC1D,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED;;;EAGE;AACF,gFAAgF","sourcesContent":["import { PaginatedObjectsResponse } from \"@mysten/sui/client\";\nimport {\n AlphaPoolType,\n CetusInvestor,\n NaviInvestor,\n CommonInvestorFields,\n CetusPoolType,\n CoinAmounts,\n PoolName,\n PoolType,\n Receipt,\n NaviVoloData,\n Investor,\n BluefinInvestor,\n BucketInvestor,\n SingleAssetPoolNames,\n fetchMultiReceipts,\n ReceiptGQL,\n cetusPoolMap,\n bluefinPoolMap,\n Distributor,\n getConf,\n} from \"../../index.js\";\nimport { poolInfo } from \"../../common/maps.js\";\nimport { ClmmPoolUtil, TickMath } from \"@cetusprotocol/cetus-sui-clmm-sdk\";\nimport BN from \"bn.js\";\nimport { Decimal } from \"decimal.js\";\nimport { getSuiClient } from \"../client.js\";\nimport { SimpleCache } from \"../../utils/simpleCache.js\";\n\nexport function convertReceiptGQLToReceipt(receipts: ReceiptGQL[]): Receipt[] {\n const res = receipts.map((receipt) => {\n return {\n objectId: receipt.address,\n version: receipt.version,\n digest: receipt.digest,\n content: {\n dataType: \"moveObject\", // Assuming a fixed value as it's not available in ReceiptA\n type: receipt.contents.type.repr,\n hasPublicTransfer: receipt.hasPublicTransfer,\n fields: {\n id: { id: receipt.contents.json.id },\n image_url: receipt.contents.json.image_url,\n last_acc_reward_per_xtoken: {\n type: \"unknown\", // Assuming fixed value\n fields: {\n contents:\n receipt.contents.json.last_acc_reward_per_xtoken.contents.map(\n (item) => ({\n type: \"unknown\", // Assuming fixed value\n fields: {\n value: item.value,\n key: {\n type: \"unknown\", // Assuming fixed value\n fields: {\n name: item.key.name,\n },\n },\n },\n }),\n ),\n },\n },\n locked_balance: receipt.contents.json.locked_balance\n ? {\n type: \"unknown\", // Assuming fixed value\n fields: {\n head: receipt.contents.json.locked_balance.head,\n id: { id: receipt.contents.json.locked_balance.id },\n size: receipt.contents.json.locked_balance.size,\n tail: receipt.contents.json.locked_balance.tail,\n },\n }\n : undefined,\n name: receipt.contents.json.name,\n owner: receipt.contents.json.owner,\n pending_rewards: {\n type: \"unknown\", // Assuming fixed value\n fields: {\n contents: receipt.contents.json.pending_rewards.contents.map(\n (item) => ({\n type: \"unknown\", // Assuming fixed value\n fields: {\n key: {\n type: \"unknown\", // Assuming fixed value\n fields: {\n name: item.key.name,\n },\n },\n value: item.value,\n },\n }),\n ),\n },\n },\n pool_id: receipt.contents.json.pool_id,\n xTokenBalance: receipt.contents.json.xTokenBalance,\n unlocked_xtokens: receipt.contents.json.unlocked_xtokens ?? undefined,\n },\n },\n };\n });\n return res;\n}\n\nconst receiptsCache = new SimpleCache<Receipt[]>(3600000);\nconst receiptsPromiseCache = new SimpleCache<Promise<Receipt[]>>(3600000);\n\nexport async function getMultiReceipts(address: string) {\n try {\n const receiptMap = await fetchMultiReceipts(address);\n for (const pool of Object.keys(poolInfo)) {\n const cacheKey = `getReceipts-${poolInfo[pool].receiptName}-${address}`;\n let receipt: Receipt[] = [];\n if (receiptMap.has(poolInfo[pool].receiptName)) {\n receipt = convertReceiptGQLToReceipt(\n receiptMap.get(poolInfo[pool].receiptName) as ReceiptGQL[],\n );\n }\n receiptsCache.set(cacheKey, receipt);\n }\n } catch (error) {\n console.error(\"Error fetching receipts from graphQL:\", error);\n // get receipts individually\n const pools = Object.keys(poolInfo);\n const receiptPromises = pools.map((pool) => {\n return getReceipts(pool as PoolName, address, true);\n });\n const receipts = await Promise.all(receiptPromises);\n receipts.forEach((receipt, index) => {\n const cacheKey = `getReceipts-${poolInfo[pools[index]].receiptName}-${address}`;\n receiptsCache.set(cacheKey, receipt);\n });\n }\n}\n\nexport async function getReceipts(\n poolName: PoolName,\n address: string,\n ignoreCache: boolean,\n): Promise<Receipt[]> {\n const suiClient = getSuiClient();\n const receiptsCacheKey = `getReceipts-${poolInfo[poolName].receiptName}-${address}`;\n if (ignoreCache) {\n receiptsCache.delete(receiptsCacheKey);\n receiptsPromiseCache.delete(receiptsCacheKey);\n }\n const cachedResponse = receiptsCache.get(receiptsCacheKey);\n if (cachedResponse) {\n return cachedResponse;\n }\n //\n const nfts: Receipt[] = [];\n if (poolInfo[poolName].receiptType == \"\") {\n return nfts;\n }\n let cachedPromise = receiptsPromiseCache.get(receiptsCacheKey);\n if (!cachedPromise) {\n cachedPromise = (async (): Promise<Receipt[]> => {\n // const first_package = getConf().ALPHA_FIRST_PACKAGE_ID;\n let currentCursor: string | null | undefined = null;\n while (true) {\n const paginatedObjects: PaginatedObjectsResponse =\n await suiClient.getOwnedObjects({\n owner: address,\n cursor: currentCursor,\n filter: {\n // StructType: `${first_package}::${module}::Receipt`,\n StructType: poolInfo[poolName].receiptType,\n },\n options: {\n showContent: true,\n },\n });\n // Traverse the current page data and push to coins array\n paginatedObjects.data.forEach((obj) => {\n const o = obj.data as Receipt;\n if (o) {\n if (poolInfo[poolName].receiptName === o.content.fields.name) {\n nfts.push(o);\n }\n }\n });\n // Check if there's a next page\n if (paginatedObjects.hasNextPage && paginatedObjects.nextCursor) {\n currentCursor = paginatedObjects.nextCursor;\n } else {\n // No more pages available\n // console.log(\"No more receipts available.\");\n break;\n }\n }\n receiptsCache.set(receiptsCacheKey, nfts);\n receiptsPromiseCache.delete(receiptsCacheKey);\n return nfts;\n })().catch((error) => {\n receiptsPromiseCache.delete(receiptsCacheKey); // Remove the promise from cache\n throw error;\n });\n // const data = await cachedPromise;\n // console.log(\"received cached data\", data);\n receiptsPromiseCache.set(receiptsCacheKey, cachedPromise);\n }\n return cachedPromise;\n}\n\nexport async function getPoolExchangeRate(\n poolName: PoolName,\n ignoreCache: boolean,\n): Promise<Decimal> {\n let pool;\n try {\n pool = await getPool(poolName, ignoreCache);\n const xTokenSupply = new Decimal(pool.content.fields.xTokenSupply);\n let tokensInvested = new Decimal(pool.content.fields.tokensInvested);\n if (poolName == \"ALPHA\") {\n tokensInvested = new Decimal(pool.content.fields.alpha_bal);\n } else if (poolInfo[poolName].parentProtocolName == \"CETUS\") {\n const investor = (await getInvestor(\n poolName,\n ignoreCache,\n )) as CetusInvestor & CommonInvestorFields;\n if (!investor) {\n throw new Error(`couldnt fetch investor object for pool: ${poolName}`);\n }\n tokensInvested = new Decimal(pool.content.fields.tokensInvested);\n }\n\n // Check for division by zero\n if (xTokenSupply.eq(0)) {\n console.error(\"Division by zero error: tokensInvested is zero.\");\n return new Decimal(0);\n }\n const poolExchangeRate = tokensInvested.div(xTokenSupply);\n return poolExchangeRate;\n } catch (err) {\n console.log(\n `getPoolExchangeRate failed for poolName: ${poolName}, with error ${err}`,\n );\n throw err;\n }\n}\n\nconst poolCache = new SimpleCache<PoolType | AlphaPoolType>();\nconst poolPromiseCache = new SimpleCache<Promise<PoolType | AlphaPoolType>>();\n\nexport async function getMultiPool() {\n let pools = Object.keys(poolInfo);\n pools = pools.filter((pool) => {\n return poolInfo[pool].poolId !== \"\";\n });\n const poolIds = pools.map((pool) => {\n return poolInfo[pool].poolId;\n });\n try {\n const o = await getSuiClient().multiGetObjects({\n ids: poolIds,\n options: {\n showContent: true,\n },\n });\n for (let i = 0; i < pools.length; i = i + 1) {\n const poolData = o[i].data as AlphaPoolType | PoolType;\n const cacheKey = `pool_${poolInfo[pools[i]].poolId}`;\n poolCache.set(cacheKey, poolData);\n }\n } catch (error) {\n console.error(`Error getting multiPools - ${error}`);\n }\n}\n\nexport async function getPool(\n poolName: string,\n ignoreCache: boolean,\n): Promise<PoolType | AlphaPoolType> {\n const suiClient = getSuiClient();\n const cacheKey = `pool_${poolInfo[poolName.toUpperCase()].poolId}`;\n\n if (ignoreCache) {\n poolCache.delete(cacheKey);\n poolPromiseCache.delete(cacheKey);\n }\n\n // Check if the pool is already in the cache\n const cachedPool = poolCache.get(cacheKey);\n if (cachedPool) {\n return cachedPool;\n }\n\n // Check if there is already a promise in the cache\n let poolPromise = poolPromiseCache.get(cacheKey);\n if (poolPromise) {\n return poolPromise;\n }\n // If not, create a new promise and cache it\n poolPromise = (async () => {\n try {\n const o = await suiClient.getObject({\n id: poolInfo[poolName].poolId,\n options: {\n showContent: true,\n },\n });\n\n const poolData =\n poolName === \"ALPHA\" ? (o.data as AlphaPoolType) : (o.data as PoolType);\n\n // Cache the pool object\n poolCache.set(cacheKey, poolData);\n return poolData;\n } catch (err) {\n console.error(`Error in getPool; poolName => ${poolName}`);\n throw err;\n } finally {\n // Remove the promise from the cache after it resolves\n poolPromiseCache.delete(cacheKey);\n }\n })();\n\n // Cache the promise\n poolPromiseCache.set(cacheKey, poolPromise);\n return poolPromise;\n}\n\nconst cetusPoolCache = new SimpleCache<CetusPoolType>();\nconst cetusPoolPromiseCache = new SimpleCache<Promise<CetusPoolType>>();\n\nexport async function getMultiParentPool() {\n let pools = Object.keys(poolInfo);\n pools = pools.filter((pool) => {\n return poolInfo[pool].poolId !== \"\";\n });\n const poolIds = pools.map((pool) => {\n return poolInfo[pool].parentPoolId;\n });\n try {\n const o = await getSuiClient().multiGetObjects({\n ids: poolIds,\n options: {\n showContent: true,\n },\n });\n for (let i = 0; i < pools.length; i = i + 1) {\n const poolData = o[i].data as CetusPoolType;\n const cacheKey = `pool_${poolInfo[pools[i]].parentPoolId}`;\n cetusPoolCache.set(cacheKey, poolData);\n }\n } catch (e) {\n console.error(`Error getting multiPools`);\n }\n}\n\nexport async function getParentPool(\n poolName: string,\n ignoreCache: boolean,\n): Promise<CetusPoolType> {\n const suiClient = getSuiClient();\n const cacheKey = `pool_${cetusPoolMap[poolName.toUpperCase()]}`;\n if (ignoreCache) {\n cetusPoolCache.delete(cacheKey);\n cetusPoolPromiseCache.delete(cacheKey);\n }\n\n // Check if the pool is already in the cache\n const cachedPool = cetusPoolCache.get(cacheKey);\n if (cachedPool) {\n return cachedPool;\n }\n\n // Check if there is already a promise in the cache\n let cetusPoolPromise = cetusPoolPromiseCache.get(cacheKey);\n if (cetusPoolPromise) {\n return cetusPoolPromise;\n }\n // If not, create a new promise and cache it\n cetusPoolPromise = (async () => {\n try {\n const id = poolInfo[poolName]\n ? poolInfo[poolName].parentPoolId\n : cetusPoolMap[poolName]\n ? cetusPoolMap[poolName]\n : bluefinPoolMap[poolName];\n const o = await suiClient.getObject({\n id: id,\n options: {\n showContent: true,\n },\n });\n const cetusPool = o.data as CetusPoolType;\n\n // Cache the pool object\n cetusPoolCache.set(cacheKey, cetusPool);\n return cetusPool;\n } catch (err) {\n console.error(`getCetusPool failed for poolName: ${poolName}`);\n throw err;\n } finally {\n // Remove the promise from the cache after it resolves\n cetusPoolPromiseCache.delete(cacheKey);\n }\n })();\n\n // Cache the promise\n cetusPoolPromiseCache.set(cacheKey, cetusPoolPromise);\n return cetusPoolPromise;\n}\n\nconst investorCache = new SimpleCache<Investor>();\nconst investorPromiseCache = new SimpleCache<Promise<Investor>>();\n\nexport async function getMultiInvestor() {\n let pools = Object.keys(poolInfo);\n pools = pools.filter((pool) => {\n return poolInfo[pool].investorId !== \"\";\n });\n const investorIds = pools.map((pool) => {\n return poolInfo[pool].investorId;\n });\n try {\n const o = await getSuiClient().multiGetObjects({\n ids: investorIds,\n options: {\n showContent: true,\n },\n });\n for (let i = 0; i < pools.length; i = i + 1) {\n const investorData = o[i].data as Investor;\n const cacheKey = `investor_${poolInfo[pools[i]].investorId}`;\n investorCache.set(cacheKey, investorData);\n }\n } catch (e) {\n console.error(`Error getting multiPools`);\n }\n}\n\nexport async function getInvestor(\n poolName: PoolName,\n ignoreCache: boolean,\n): Promise<Investor> {\n const suiClient = getSuiClient();\n const cacheKey = `investor_${poolInfo[poolName.toUpperCase()].investorId}`;\n if (ignoreCache) {\n investorCache.delete(cacheKey);\n investorPromiseCache.delete(cacheKey);\n }\n // Check if the investor is already in the cache\n const cachedInvestor = investorCache.get(cacheKey);\n if (cachedInvestor) {\n return cachedInvestor;\n }\n\n // Check if there is already a promise in the cache\n let cetusInvestorPromise = investorPromiseCache.get(cacheKey);\n if (cetusInvestorPromise) {\n return cetusInvestorPromise;\n }\n // If not, create a new promise and cache it\n cetusInvestorPromise = (async () => {\n try {\n const o = await suiClient.getObject({\n id: poolInfo[poolName.toUpperCase()].investorId,\n options: {\n showContent: true,\n },\n });\n let cetusInvestor;\n if (poolInfo[poolName].parentProtocolName == \"NAVI\") {\n cetusInvestor = o.data as NaviInvestor & CommonInvestorFields;\n } else if (poolInfo[poolName].parentProtocolName == \"BUCKET\") {\n cetusInvestor = o.data as BucketInvestor & CommonInvestorFields;\n } else if (poolInfo[poolName].parentProtocolName == \"BLUEFIN\") {\n cetusInvestor = o.data as BluefinInvestor & CommonInvestorFields;\n } else {\n cetusInvestor = o.data as CetusInvestor & CommonInvestorFields;\n }\n\n // Cache the investor object\n investorCache.set(cacheKey, cetusInvestor);\n return cetusInvestor;\n } catch (err) {\n console.error(`getInvestor failed for pool: ${poolName}`);\n throw err;\n } finally {\n // Remove the promise from the cache after it resolves\n investorPromiseCache.delete(cacheKey);\n }\n })();\n\n // Cache the promise\n investorPromiseCache.set(cacheKey, cetusInvestorPromise);\n return cetusInvestorPromise;\n}\n\nexport async function fetchVoloExchangeRate(): Promise<NaviVoloData> {\n const apiUrl = \"https://open-api.naviprotocol.io/api/volo/stats\";\n const NaviVoloDetails: NaviVoloData = await fetch(apiUrl)\n .then(async (response) => {\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n const data = (await response.json()) as NaviVoloData; // Parse the JSON response\n return data;\n })\n .catch((error) => {\n console.log(\"failed to fetch Navi-volo details\", error);\n throw error;\n });\n return NaviVoloDetails;\n}\n\nexport async function getCoinAmountsFromLiquidity(\n poolName: PoolName,\n liquidity: string,\n ignoreCache: boolean,\n): Promise<[string, string]> {\n const clmmPool = await getParentPool(poolName, ignoreCache);\n const investor = (await getInvestor(poolName, ignoreCache)) as CetusInvestor &\n CommonInvestorFields;\n\n const upper_bound = 443636;\n let lower_tick = Number(investor!.content.fields.lower_tick);\n let upper_tick = Number(investor!.content.fields.upper_tick);\n\n if (lower_tick > upper_bound) {\n lower_tick = -~(lower_tick - 1);\n }\n if (upper_tick > upper_bound) {\n upper_tick = -~(upper_tick - 1);\n }\n if (clmmPool) {\n const liquidityInt = Math.floor(parseFloat(liquidity));\n const coin_amounts: CoinAmounts = ClmmPoolUtil.getCoinAmountFromLiquidity(\n new BN(`${liquidityInt}`),\n new BN(clmmPool.content.fields.current_sqrt_price),\n TickMath.tickIndexToSqrtPriceX64(lower_tick),\n TickMath.tickIndexToSqrtPriceX64(upper_tick),\n true,\n );\n return [coin_amounts.coinA.toString(), coin_amounts.coinB.toString()];\n } else {\n return [\"0\", \"0\"];\n }\n}\n\nexport async function multiGetNaviInvestor(poolNames: SingleAssetPoolNames[]) {\n const results: {\n [poolName in SingleAssetPoolNames]?:\n | (NaviInvestor & CommonInvestorFields)\n | undefined;\n } = {};\n const poolInvestorIds: string[] = [];\n\n for (const poolName of poolNames) {\n poolInvestorIds.push(poolInfo[poolName.toUpperCase()].investorId);\n }\n try {\n const suiClient = getSuiClient();\n const objects = await suiClient.multiGetObjects({\n ids: poolInvestorIds,\n options: { showContent: true },\n });\n for (let i = 0; i < objects.length; i++) {\n const investor = objects[i].data as NaviInvestor & CommonInvestorFields;\n results[poolNames[i]] = investor;\n }\n return results;\n } catch (err) {\n //improve\n console.error(\n \"multiGetNaviInvestor failed for poolNames: \",\n poolNames.join(\", \"),\n );\n throw err;\n }\n}\n\nconst distributorCache = new SimpleCache<Distributor>();\nconst distributorPromiseCache = new SimpleCache<\n Promise<Distributor | undefined>\n>();\n\nexport async function getDistributor(\n ignoreCache: boolean,\n): Promise<Distributor | undefined> {\n const suiClient = getSuiClient();\n const cacheKey = `distributor_${getConf().ALPHA_DISTRIBUTOR}`;\n if (ignoreCache) {\n distributorCache.delete(cacheKey);\n distributorPromiseCache.delete(cacheKey);\n }\n // Check if the distributor is already in the cache\n const cachedDistributor = distributorCache.get(cacheKey);\n if (cachedDistributor) {\n return cachedDistributor;\n }\n\n // Check if there is already a promise in the cache\n let distributorPromise = distributorPromiseCache.get(cacheKey);\n if (distributorPromise) {\n return distributorPromise;\n }\n\n // If not, create a new promise and cache it\n distributorPromise = (async () => {\n try {\n const o = await suiClient.getObject({\n id: getConf().ALPHA_DISTRIBUTOR,\n options: {\n showContent: true,\n },\n });\n const distributor = o.data as Distributor;\n\n // Cache the distributor object\n distributorCache.set(cacheKey, distributor);\n return distributor;\n } catch (e) {\n console.error(`getDistributor failed`);\n return undefined;\n } finally {\n // Remove the promise from the cache after it resolves\n distributorPromiseCache.delete(cacheKey);\n }\n })();\n\n // Cache the promise\n distributorPromiseCache.set(cacheKey, distributorPromise);\n return distributorPromise;\n}\n\n/*\nfor the missing pools, add a promise, each of those promises waits for there respective object from a map, that map is populated all at once, \nproblem with concurrency\n*/\n// ask how to deal with this kind of probem with high concurrency anf throughput\n"]}
|
|
1
|
+
{"version":3,"file":"getReceipts.js","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/getReceipts.ts"],"names":[],"mappings":"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","sourcesContent":["import { PaginatedObjectsResponse } from \"@mysten/sui/client\";\nimport {\n AlphaPoolType,\n CetusInvestor,\n NaviInvestor,\n CommonInvestorFields,\n CetusPoolType,\n PoolName,\n PoolType,\n Receipt,\n NaviVoloData,\n Investor,\n BluefinInvestor,\n BucketInvestor,\n SingleAssetPoolNames,\n fetchMultiReceipts,\n ReceiptGQL,\n cetusPoolMap,\n bluefinPoolMap,\n Distributor,\n getConf,\n BluefinPoolType,\n coinsList,\n} from \"../../index.js\";\nimport { doubleAssetPoolCoinMap, poolInfo } from \"../../common/maps.js\";\nimport { Decimal } from \"decimal.js\";\nimport { getSuiClient } from \"../client.js\";\nimport { SimpleCache } from \"../../utils/simpleCache.js\";\nimport { TickMath } from \"@cetusprotocol/cetus-sui-clmm-sdk\";\n\nexport function convertReceiptGQLToReceipt(receipts: ReceiptGQL[]): Receipt[] {\n const res = receipts.map((receipt) => {\n return {\n objectId: receipt.address,\n version: receipt.version,\n digest: receipt.digest,\n content: {\n dataType: \"moveObject\", // Assuming a fixed value as it's not available in ReceiptA\n type: receipt.contents.type.repr,\n hasPublicTransfer: receipt.hasPublicTransfer,\n fields: {\n id: { id: receipt.contents.json.id },\n image_url: receipt.contents.json.image_url,\n last_acc_reward_per_xtoken: {\n type: \"unknown\", // Assuming fixed value\n fields: {\n contents:\n receipt.contents.json.last_acc_reward_per_xtoken.contents.map(\n (item) => ({\n type: \"unknown\", // Assuming fixed value\n fields: {\n value: item.value,\n key: {\n type: \"unknown\", // Assuming fixed value\n fields: {\n name: item.key.name,\n },\n },\n },\n }),\n ),\n },\n },\n locked_balance: receipt.contents.json.locked_balance\n ? {\n type: \"unknown\", // Assuming fixed value\n fields: {\n head: receipt.contents.json.locked_balance.head,\n id: { id: receipt.contents.json.locked_balance.id },\n size: receipt.contents.json.locked_balance.size,\n tail: receipt.contents.json.locked_balance.tail,\n },\n }\n : undefined,\n name: receipt.contents.json.name,\n owner: receipt.contents.json.owner,\n pending_rewards: {\n type: \"unknown\", // Assuming fixed value\n fields: {\n contents: receipt.contents.json.pending_rewards.contents.map(\n (item) => ({\n type: \"unknown\", // Assuming fixed value\n fields: {\n key: {\n type: \"unknown\", // Assuming fixed value\n fields: {\n name: item.key.name,\n },\n },\n value: item.value,\n },\n }),\n ),\n },\n },\n pool_id: receipt.contents.json.pool_id,\n xTokenBalance: receipt.contents.json.xTokenBalance,\n unlocked_xtokens: receipt.contents.json.unlocked_xtokens ?? undefined,\n },\n },\n };\n });\n return res;\n}\n\nconst receiptsCache = new SimpleCache<Receipt[]>(3600000);\nconst receiptsPromiseCache = new SimpleCache<Promise<Receipt[]>>(3600000);\n\nexport async function getMultiReceipts(address: string) {\n try {\n const receiptMap = await fetchMultiReceipts(address);\n for (const pool of Object.keys(poolInfo)) {\n const cacheKey = `getReceipts-${poolInfo[pool].receiptName}-${address}`;\n let receipt: Receipt[] = [];\n if (receiptMap.has(poolInfo[pool].receiptName)) {\n receipt = convertReceiptGQLToReceipt(\n receiptMap.get(poolInfo[pool].receiptName) as ReceiptGQL[],\n );\n }\n receiptsCache.set(cacheKey, receipt);\n }\n } catch (error) {\n console.error(\"Error fetching receipts from graphQL:\", error);\n // get receipts individually\n const pools = Object.keys(poolInfo);\n const receiptPromises = pools.map((pool) => {\n return getReceipts(pool as PoolName, address, true);\n });\n const receipts = await Promise.all(receiptPromises);\n receipts.forEach((receipt, index) => {\n const cacheKey = `getReceipts-${poolInfo[pools[index]].receiptName}-${address}`;\n receiptsCache.set(cacheKey, receipt);\n });\n }\n}\n\nexport async function getReceipts(\n poolName: PoolName,\n address: string,\n ignoreCache: boolean,\n): Promise<Receipt[]> {\n const suiClient = getSuiClient();\n const receiptsCacheKey = `getReceipts-${poolInfo[poolName].receiptName}-${address}`;\n if (ignoreCache) {\n receiptsCache.delete(receiptsCacheKey);\n receiptsPromiseCache.delete(receiptsCacheKey);\n }\n const cachedResponse = receiptsCache.get(receiptsCacheKey);\n if (cachedResponse) {\n return cachedResponse;\n }\n //\n const nfts: Receipt[] = [];\n if (poolInfo[poolName].receiptType == \"\") {\n return nfts;\n }\n let cachedPromise = receiptsPromiseCache.get(receiptsCacheKey);\n if (!cachedPromise) {\n cachedPromise = (async (): Promise<Receipt[]> => {\n // const first_package = getConf().ALPHA_FIRST_PACKAGE_ID;\n let currentCursor: string | null | undefined = null;\n while (true) {\n const paginatedObjects: PaginatedObjectsResponse =\n await suiClient.getOwnedObjects({\n owner: address,\n cursor: currentCursor,\n filter: {\n // StructType: `${first_package}::${module}::Receipt`,\n StructType: poolInfo[poolName].receiptType,\n },\n options: {\n showContent: true,\n },\n });\n // Traverse the current page data and push to coins array\n paginatedObjects.data.forEach((obj) => {\n const o = obj.data as Receipt;\n if (o) {\n if (poolInfo[poolName].receiptName === o.content.fields.name) {\n nfts.push(o);\n }\n }\n });\n // Check if there's a next page\n if (paginatedObjects.hasNextPage && paginatedObjects.nextCursor) {\n currentCursor = paginatedObjects.nextCursor;\n } else {\n // No more pages available\n // console.log(\"No more receipts available.\");\n break;\n }\n }\n receiptsCache.set(receiptsCacheKey, nfts);\n receiptsPromiseCache.delete(receiptsCacheKey);\n return nfts;\n })().catch((error) => {\n receiptsPromiseCache.delete(receiptsCacheKey); // Remove the promise from cache\n throw error;\n });\n // const data = await cachedPromise;\n // console.log(\"received cached data\", data);\n receiptsPromiseCache.set(receiptsCacheKey, cachedPromise);\n }\n return cachedPromise;\n}\n\nexport async function getPoolExchangeRate(\n poolName: PoolName,\n ignoreCache: boolean,\n): Promise<Decimal> {\n let pool;\n try {\n pool = await getPool(poolName, ignoreCache);\n const xTokenSupply = new Decimal(pool.content.fields.xTokenSupply);\n let tokensInvested = new Decimal(pool.content.fields.tokensInvested);\n if (poolName == \"ALPHA\") {\n tokensInvested = new Decimal(pool.content.fields.alpha_bal);\n } else if (poolInfo[poolName].parentProtocolName == \"CETUS\") {\n const investor = (await getInvestor(\n poolName,\n ignoreCache,\n )) as CetusInvestor & CommonInvestorFields;\n if (!investor) {\n throw new Error(`couldnt fetch investor object for pool: ${poolName}`);\n }\n tokensInvested = new Decimal(pool.content.fields.tokensInvested);\n }\n\n // Check for division by zero\n if (xTokenSupply.eq(0)) {\n console.error(\"Division by zero error: tokensInvested is zero.\");\n return new Decimal(0);\n }\n const poolExchangeRate = tokensInvested.div(xTokenSupply);\n return poolExchangeRate;\n } catch (err) {\n console.log(\n `getPoolExchangeRate failed for poolName: ${poolName}, with error ${err}`,\n );\n throw err;\n }\n}\n\nconst poolCache = new SimpleCache<PoolType | AlphaPoolType>();\nconst poolPromiseCache = new SimpleCache<Promise<PoolType | AlphaPoolType>>();\n\nexport async function getMultiPool() {\n let pools = Object.keys(poolInfo);\n pools = pools.filter((pool) => {\n return poolInfo[pool].poolId !== \"\";\n });\n const poolIds = pools.map((pool) => {\n return poolInfo[pool].poolId;\n });\n try {\n const o = await getSuiClient().multiGetObjects({\n ids: poolIds,\n options: {\n showContent: true,\n },\n });\n for (let i = 0; i < pools.length; i = i + 1) {\n const poolData = o[i].data as AlphaPoolType | PoolType;\n const cacheKey = `pool_${poolInfo[pools[i]].poolId}`;\n poolCache.set(cacheKey, poolData);\n }\n } catch (error) {\n console.error(`Error getting multiPools - ${error}`);\n }\n}\n\nexport async function getPool(\n poolName: string,\n ignoreCache: boolean,\n): Promise<PoolType | AlphaPoolType> {\n const suiClient = getSuiClient();\n const cacheKey = `pool_${poolInfo[poolName.toUpperCase()].poolId}`;\n\n if (ignoreCache) {\n poolCache.delete(cacheKey);\n poolPromiseCache.delete(cacheKey);\n }\n\n // Check if the pool is already in the cache\n const cachedPool = poolCache.get(cacheKey);\n if (cachedPool) {\n return cachedPool;\n }\n\n // Check if there is already a promise in the cache\n let poolPromise = poolPromiseCache.get(cacheKey);\n if (poolPromise) {\n return poolPromise;\n }\n // If not, create a new promise and cache it\n poolPromise = (async () => {\n try {\n const o = await suiClient.getObject({\n id: poolInfo[poolName].poolId,\n options: {\n showContent: true,\n },\n });\n\n const poolData =\n poolName === \"ALPHA\" ? (o.data as AlphaPoolType) : (o.data as PoolType);\n\n // Cache the pool object\n poolCache.set(cacheKey, poolData);\n return poolData;\n } catch (err) {\n console.error(`Error in getPool; poolName => ${poolName}`);\n throw err;\n } finally {\n // Remove the promise from the cache after it resolves\n poolPromiseCache.delete(cacheKey);\n }\n })();\n\n // Cache the promise\n poolPromiseCache.set(cacheKey, poolPromise);\n return poolPromise;\n}\n\nconst cetusPoolCache = new SimpleCache<CetusPoolType | BluefinPoolType>();\nconst cetusPoolPromiseCache = new SimpleCache<\n Promise<CetusPoolType | BluefinPoolType>\n>();\n\nexport async function getMultiParentPool() {\n let pools = Object.keys(poolInfo);\n pools = pools.filter((pool) => {\n return poolInfo[pool].poolId !== \"\";\n });\n const poolIds = pools.map((pool) => {\n return poolInfo[pool].parentPoolId;\n });\n try {\n const o = await getSuiClient().multiGetObjects({\n ids: poolIds,\n options: {\n showContent: true,\n },\n });\n for (let i = 0; i < pools.length; i = i + 1) {\n const poolData = o[i].data as CetusPoolType;\n const cacheKey = `pool_${poolInfo[pools[i]].parentPoolId}`;\n cetusPoolCache.set(cacheKey, poolData);\n }\n } catch (e) {\n console.error(`Error getting multiPools`);\n }\n}\n\nexport async function getParentPool(\n poolName: string,\n ignoreCache: boolean,\n): Promise<CetusPoolType | BluefinPoolType> {\n const suiClient = getSuiClient();\n const cacheKey = `pool_${poolName}`;\n if (ignoreCache) {\n cetusPoolCache.delete(cacheKey);\n cetusPoolPromiseCache.delete(cacheKey);\n }\n\n // Check if the pool is already in the cache\n const cachedPool = cetusPoolCache.get(cacheKey);\n if (cachedPool) {\n return cachedPool;\n }\n\n // Check if there is already a promise in the cache\n let cetusPoolPromise = cetusPoolPromiseCache.get(cacheKey);\n if (cetusPoolPromise) {\n return cetusPoolPromise;\n }\n // If not, create a new promise and cache it\n cetusPoolPromise = (async () => {\n try {\n const id = poolInfo[poolName]\n ? poolInfo[poolName].parentPoolId\n : cetusPoolMap[poolName]\n ? cetusPoolMap[poolName]\n : bluefinPoolMap[poolName];\n const o = await suiClient.getObject({\n id: id,\n options: {\n showContent: true,\n },\n });\n const cetusPool = o.data as CetusPoolType | BluefinPoolType;\n\n // Cache the pool object\n cetusPoolCache.set(cacheKey, cetusPool);\n return cetusPool;\n } catch (err) {\n console.error(`getCetusPool failed for poolName: ${poolName}`);\n throw err;\n } finally {\n // Remove the promise from the cache after it resolves\n cetusPoolPromiseCache.delete(cacheKey);\n }\n })();\n\n // Cache the promise\n cetusPoolPromiseCache.set(cacheKey, cetusPoolPromise);\n return cetusPoolPromise;\n}\n\nconst investorCache = new SimpleCache<Investor>();\nconst investorPromiseCache = new SimpleCache<Promise<Investor>>();\n\nexport async function getMultiInvestor() {\n let pools = Object.keys(poolInfo);\n pools = pools.filter((pool) => {\n return poolInfo[pool].investorId !== \"\";\n });\n const investorIds = pools.map((pool) => {\n return poolInfo[pool].investorId;\n });\n try {\n const o = await getSuiClient().multiGetObjects({\n ids: investorIds,\n options: {\n showContent: true,\n },\n });\n for (let i = 0; i < pools.length; i = i + 1) {\n const investorData = o[i].data as Investor;\n const cacheKey = `investor_${poolInfo[pools[i]].investorId}`;\n investorCache.set(cacheKey, investorData);\n }\n } catch (e) {\n console.error(`Error getting multiPools`);\n }\n}\n\nexport async function getInvestor(\n poolName: PoolName,\n ignoreCache: boolean,\n): Promise<Investor> {\n const suiClient = getSuiClient();\n const cacheKey = `investor_${poolInfo[poolName.toUpperCase()].investorId}`;\n if (ignoreCache) {\n investorCache.delete(cacheKey);\n investorPromiseCache.delete(cacheKey);\n }\n // Check if the investor is already in the cache\n const cachedInvestor = investorCache.get(cacheKey);\n if (cachedInvestor) {\n return cachedInvestor;\n }\n\n // Check if there is already a promise in the cache\n let cetusInvestorPromise = investorPromiseCache.get(cacheKey);\n if (cetusInvestorPromise) {\n return cetusInvestorPromise;\n }\n // If not, create a new promise and cache it\n cetusInvestorPromise = (async () => {\n try {\n const o = await suiClient.getObject({\n id: poolInfo[poolName.toUpperCase()].investorId,\n options: {\n showContent: true,\n },\n });\n let cetusInvestor;\n if (poolInfo[poolName].parentProtocolName == \"NAVI\") {\n cetusInvestor = o.data as NaviInvestor & CommonInvestorFields;\n } else if (poolInfo[poolName].parentProtocolName == \"BUCKET\") {\n cetusInvestor = o.data as BucketInvestor & CommonInvestorFields;\n } else if (poolInfo[poolName].parentProtocolName == \"BLUEFIN\") {\n cetusInvestor = o.data as BluefinInvestor & CommonInvestorFields;\n } else {\n cetusInvestor = o.data as CetusInvestor & CommonInvestorFields;\n }\n\n // Cache the investor object\n investorCache.set(cacheKey, cetusInvestor);\n return cetusInvestor;\n } catch (err) {\n console.error(`getInvestor failed for pool: ${poolName}`);\n throw err;\n } finally {\n // Remove the promise from the cache after it resolves\n investorPromiseCache.delete(cacheKey);\n }\n })();\n\n // Cache the promise\n investorPromiseCache.set(cacheKey, cetusInvestorPromise);\n return cetusInvestorPromise;\n}\n\nexport async function fetchVoloExchangeRate(): Promise<NaviVoloData> {\n const apiUrl = \"https://open-api.naviprotocol.io/api/volo/stats\";\n const NaviVoloDetails: NaviVoloData = await fetch(apiUrl)\n .then(async (response) => {\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n const data = (await response.json()) as NaviVoloData; // Parse the JSON response\n return data;\n })\n .catch((error) => {\n console.log(\"failed to fetch Navi-volo details\", error);\n throw error;\n });\n return NaviVoloDetails;\n}\n\nexport async function multiGetNaviInvestor(poolNames: SingleAssetPoolNames[]) {\n const results: {\n [poolName in SingleAssetPoolNames]?:\n | (NaviInvestor & CommonInvestorFields)\n | undefined;\n } = {};\n const poolInvestorIds: string[] = [];\n\n for (const poolName of poolNames) {\n poolInvestorIds.push(poolInfo[poolName.toUpperCase()].investorId);\n }\n try {\n const suiClient = getSuiClient();\n const objects = await suiClient.multiGetObjects({\n ids: poolInvestorIds,\n options: { showContent: true },\n });\n for (let i = 0; i < objects.length; i++) {\n const investor = objects[i].data as NaviInvestor & CommonInvestorFields;\n results[poolNames[i]] = investor;\n }\n return results;\n } catch (err) {\n //improve\n console.error(\n \"multiGetNaviInvestor failed for poolNames: \",\n poolNames.join(\", \"),\n );\n throw err;\n }\n}\n\nconst distributorCache = new SimpleCache<Distributor>();\nconst distributorPromiseCache = new SimpleCache<\n Promise<Distributor | undefined>\n>();\n\nexport async function getDistributor(\n ignoreCache: boolean,\n): Promise<Distributor | undefined> {\n const suiClient = getSuiClient();\n const cacheKey = `distributor_${getConf().ALPHA_DISTRIBUTOR}`;\n if (ignoreCache) {\n distributorCache.delete(cacheKey);\n distributorPromiseCache.delete(cacheKey);\n }\n // Check if the distributor is already in the cache\n const cachedDistributor = distributorCache.get(cacheKey);\n if (cachedDistributor) {\n return cachedDistributor;\n }\n\n // Check if there is already a promise in the cache\n let distributorPromise = distributorPromiseCache.get(cacheKey);\n if (distributorPromise) {\n return distributorPromise;\n }\n\n // If not, create a new promise and cache it\n distributorPromise = (async () => {\n try {\n const o = await suiClient.getObject({\n id: getConf().ALPHA_DISTRIBUTOR,\n options: {\n showContent: true,\n },\n });\n const distributor = o.data as Distributor;\n\n // Cache the distributor object\n distributorCache.set(cacheKey, distributor);\n return distributor;\n } catch (e) {\n console.error(`getDistributor failed`);\n return undefined;\n } finally {\n // Remove the promise from the cache after it resolves\n distributorPromiseCache.delete(cacheKey);\n }\n })();\n\n // Cache the promise\n distributorPromiseCache.set(cacheKey, distributorPromise);\n return distributorPromise;\n}\n\nexport async function getPositionRange(\n ignoreCache: boolean,\n): Promise<Map<PoolName, { lowerPrice: string; upperPrice: string }>> {\n const res = new Map<PoolName, { lowerPrice: string; upperPrice: string }>();\n for (const poolNameString of Object.keys(poolInfo)) {\n const poolName = poolNameString as PoolName;\n if (\n poolName == \"ALPHA\" ||\n ![\"CETUS\", \"BLUEFIN\"].includes(\n poolInfo[poolNameString].parentProtocolName,\n )\n ) {\n continue;\n }\n let investor;\n if (poolInfo[poolNameString].parentProtocolName == \"CETUS\") {\n investor = (await getInvestor(\n poolName as PoolName,\n ignoreCache,\n )) as CetusInvestor & CommonInvestorFields;\n } else {\n investor = (await getInvestor(\n poolName as PoolName,\n ignoreCache,\n )) as BluefinInvestor & CommonInvestorFields;\n }\n const coinAName = doubleAssetPoolCoinMap[poolName].coin1;\n const coinA = coinsList[coinAName];\n const coinBName = doubleAssetPoolCoinMap[poolName].coin2;\n const coinB = coinsList[coinBName];\n if (investor) {\n const upperBound = 443636;\n let lowerTick = Number(investor.content.fields.lower_tick);\n let upperTick = Number(investor.content.fields.upper_tick);\n if (lowerTick > upperBound) {\n lowerTick = -~(lowerTick - 1);\n }\n if (upperTick > upperBound) {\n upperTick = -~(upperTick - 1);\n }\n const lowerPrice = TickMath.tickIndexToPrice(\n lowerTick,\n coinA.expo,\n coinB.expo,\n );\n const upperPrice = TickMath.tickIndexToPrice(\n upperTick,\n coinA.expo,\n coinB.expo,\n );\n res.set(poolName, {\n lowerPrice: lowerPrice.toString(),\n upperPrice: upperPrice.toString(),\n });\n }\n }\n return res;\n}\n\n/*\nfor the missing pools, add a promise, each of those promises waits for there respective object from a map, that map is populated all at once, \nproblem with concurrency\n*/\n// ask how to deal with this kind of probem with high concurrency anf throughput\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { QuoteResponse } from "@7kprotocol/sdk-ts";
|
|
2
|
+
import { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
|
|
3
|
+
import { SwapOptions } from "../common/types.js";
|
|
4
|
+
export type sevenKSwapOptions = SwapOptions;
|
|
5
|
+
export declare class SevenKGateway {
|
|
6
|
+
constructor();
|
|
7
|
+
getQuote(options: sevenKSwapOptions): Promise<QuoteResponse | undefined>;
|
|
8
|
+
getTransactionBlock(options: sevenKSwapOptions, quoteResponse: QuoteResponse, transaction?: Transaction | undefined): Promise<{
|
|
9
|
+
tx: Transaction;
|
|
10
|
+
coinOut: TransactionObjectArgument | undefined;
|
|
11
|
+
}>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=7k.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"7k.d.ts","sourceRoot":"","sources":["../../../src/transactions/7k.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,aAAa,EAEd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,WAAW,EACX,yBAAyB,EAC1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC;AAE5C,qBAAa,aAAa;;IAMlB,QAAQ,CAAC,OAAO,EAAE,iBAAiB;IAanC,mBAAmB,CACvB,OAAO,EAAE,iBAAiB,EAC1B,aAAa,EAAE,aAAa,EAC5B,WAAW,GAAE,WAAW,GAAG,SAAqB,GAC/C,OAAO,CAAC;QACT,EAAE,EAAE,WAAW,CAAC;QAChB,OAAO,EAAE,yBAAyB,GAAG,SAAS,CAAC;KAChD,CAAC;CAoBH"}
|